Linux第四讲课件、用户和组管理

Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源。

 

Linux系统下的用户帐户分为三种

  1. 普通用户帐户
  2. 超级用户帐户:又称为根用户或管理员账户,可以对普通用户和整个系统进行管理。一般命名为root
  3. 系统用户账户:也被称之为伪用户或假用户,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的。

 

用户和组概述

用户帐户:是用户的身份标识,用户通过用户帐户可以登录到系统,并且访问已经被授权的资源。

组:是具有相同特性的用户的逻辑集合

  1. 在为资源授权时可以把权限赋予某个组,组中的成员即可自动获得这种权限。
  2. 一个用户账户至少属于一个用户组,当是多个组的成员时,其中某个组是该用户的主组(私有组),其他组是该用户的附属组(标准组)。

用户名

用来标识用户的名称,可以是字母、数字组成的字符串,区分大小写

密码

用于验证用户身份的特殊验证码

用户标识(UID)

用来表示用户的数字标识符

用户主目录

用户的私人目录,也是用户登录系统后默认所在的目录

登录Shell

用户登录后默认使用的Shell程序,默认为/bin/bash

具有相同属性的用户属于同一个组

组标识(GID)

用来表示组群的数字标识符

1、每一个用户都有一个唯一的身份标识,称为用户ID(UID);每一个用户组也有一个唯一的身份标识,称为用户组ID(GID)。

2、root用户的UID为0。

3、普通用户的UID可以在创建时由管理员指定,如果不指定,用户的UID在RedHat Linux中默认从500开始顺序编号,而在Ubuntu Linux中默认从1000开始顺序编号。

4、系统用户的UID为1—499

 

用户和组配置文件

1、用户帐户文件

/etc/passwd文件:用户帐户信息

    • Vi /etc/passwd;每行用“:”分隔为7个域
    • 用户名:加密口令:UID:GID:用户描述信息:用户主目录:命令解释器
    • 真正的密码保存在shadow文件中

/etc/shadow文件:用户口令

    • sudo Vi /etc/shadow;
    • 所有用户对passwd文件均可读取,只有root用户对shadow文件可读,因此密码存放在shadow文件中更安全。
    • 用户名:密码(已加密):上次修改口令的时间:两次修改口令间隔最少的天数:两次修改口令间隔最多的天数:提前多少天警告用户口令过期:略~

2、组文件:

/etc/group文件:组帐户信息

    • Vi /etc/group;
    • 用户的组账户的信息存放在group文件中,任何用户都可以读取,用“:”分隔为4个域。
    • 组名称:组口令(一般为空):GID:组成员列表

/etc/gshadow文件:组口令、管理员等管理信息

    • sudo Vi /etc/gshadow;
    • gshadow文件用于存放组的加密口令、组管理员等信息,只有root用户可读,用“:”分隔成4个域
    • 用户组:用户组密码:用户组管理者:组成员

3、/etc/login.defs文件

    • 建立用户帐户时根据/etc/login.defs文件的配置设置用户帐户的某些选项。

 

用户账户的创建和管理

1、新建用户

  • 命令:useradd或adduser
  • 格式:useradd  [参数] 
  • 例如:创建test用户:sudo useradd test
  • useradd命令的参数含义如下:

-c comment

用户的注释性信息

-d home_dir  

指定用户的主目录

-e expire_date

禁用帐号的日期,格式为:YYYY-MM-DD

-f inactive_days

设置帐户过期多少天后,用户帐户被禁用

-u  UID           

指定用户的UID

-g initial_group 

用户所属主组的组名称或者GID

-G group-list      

用户所属的附属组列表

-m            

若用户主目录不存在则创建它

-M        

不要创建用户主目录

-n          

不要为用户创建用户私人组

-p          

passwd  加密的口令

-r 

创建UID小于500的不带主目录的系统帐号

-s  shell

指定用户的登录Shell,默认为/bin/bash

  • 例如:新建用户user01,UID为1010,指定其所属的私有组为test(test组的标识符为1001),用户的主目录为/home/user01,用户的Shell为/bin/bash,用户的密码为123456,帐户永不过期。

答案:sudo useradd -u 1010 -g 1001 -d /home/user01/ -s /bin/bash -p 123456 -f -1 user01

2、设置用户帐户口令

  • 新建用户后,要为用户设置口令,未设置口令的用户不能登陆系统,如(用ctrl+alt+F1切换至tty1尝试用未设置密码的root用户登录)
  • 指定和修改用户帐户口令:passwd  <用户名>
  • 修改用户密码时效:chage  <用户名>

passwd命令格式及参数含义:

  • 格式: passwd  [参数]  <用户名>
  • passwd命令的参数含义如下:

-l   

锁定(停用)用户帐户

-u   

口令解锁

-d  

将用户口令设置为空,这与未设置口令的帐户不同。未设置口令的帐户无法登录系统,而口令为空的帐户可以。

-f   

强迫用户下次登录时必须修改口令

-n    

指定口令的最短存活期

-x  

指定口令的最长存活期

-w   

口令要到期前提前警告的天数

-I     

口令过期后多少天停用帐户

-S    

显示帐户口令的简短状态信息

  • ps:普通用户修改口令时,passwd命令会首先询问原来的口令,只有验证通过才可以修改。但root用户例外,在root用户的shell中可以直接输入新密码无需验证老密码。故一般使用root用户时要特别小心,尽量用sudo临时提升权限,不随意使用root登陆,或做完必要的工作必须切换至普通用户状态货注销root用户登录。

chage命令格式及参数含义:

  • 格式: chage  [参数]  <用户名>
  • chage命令的参数含义如下:

-l

列出帐户口令属性的各个数值

-m  

指定口令最短存活期

-M    

指定口令最长存活期

-W  

口令要到期前提前警告的天数

-I    

口令过期后多少天停用帐户

-E    

用户帐户到期作废的日期

-d  

设置口令上一次修改的日期

  • 例如:设置user1用户的最短口令存活期为6天,最长口令存活期为60天,口令到期前5天提醒用户修改口令。

答案:sudo chage -m 6 -M 60 -W 5 user01

  • 设置完成后查看各属性值。

答案:sudo chage -l user01

3、用户账户的维护

1)修改用户账户

  • 命令:usermod
  • 格式:usermod  [参数] 
  • 例如:修改用户user01的主目录为/var/user01,把启动Shell修改为/bin/tcsh,并查看修改后的结果。

答案:sudo usermod -d /var/user01 -s /bin/tcsh user01;tail -l /etc/passwd

2)禁用和恢复用户账户

  • passwd命令

1、禁用user01用户账户,命令:sudo passwd -l user01

2、查看user01用户账户(被锁定的用户密码栏前面会加上!),命令:sudo tail -l /etc/shadow

3、解除user01用户锁定,,命令:sudo passwd -u user01

  • usermod命令

1、禁用user01用户账户,命令:sudo usermod -L user01

2、解除user01用户锁定,命令:sudo usermod -U user01

  • 直接修改/etc/passwd或/etc/shadow文件

1、可将/etc/passwd文件或/etc/shadow文件中关于user1帐户的passwd域的第一个字符前面加上一个“*”,达到禁用帐户的目的,在需要恢复的时候只要删除字符“*”即可。

2、如果只是禁止用户帐户登录系统,可以将其启动Shell设置为/bin/false或者/dev/null。

3)删除用户账户

  • 直接编辑/etc/passwd和/etc/shadow文件,删除用户所对应的行
  • 用userdel命令删除,格式:userdel [-r]
  • 例如:删除用户user01,保留用户主目录

答案:sudo userdel user01

 

组管理

  • 使用不带任何参数的useradd命令创建用户时,会同时创建一个和用户帐户同名的组,称为主组。
  • 当一个组中必须包含多个用户时则需要使用附属组。
  • 在附属组中增加、删除用户都用gpasswd命令,该命令只有root用户和组管理员才能够使用。

1、维护组账户

创建组:

  • 命令:groupadd或addgroup
  • 例如:创建一个新的组,组名为testgroup

答案:sudo groupadd testgroup

修改组:

  • 命令:groupmod
  • 格式:groupmod  [参数] 〈groupname〉
  • groupmod命令的参数含义如下:

-g 

gid 把组的GID改成gid

-n  

group-name 把组的名称改为name

-o  

强制接受更改的组的GID为重复的号码

  • 例如:修改gid;修改组名称;删除组;

答案:sudo groupmod -g 1010 testgroup;sudo groupmod -n grouptest testgroup;sudo groupdel grouptest

2、为组添加用户

  • 命令:gpasswd
  • 格式:gpasswd [参数] [用户] [组]
  • gpasswd命令的参数含义如下:

-a

把用户加入组

-d

把用户从组中删除

-r

取消组的密码

-A

给组指派管理员

  • 例如:新建组testgroup,把test用户加入testgroup组,并指派test为管理员 。

答案:sudo -i;groupadd testgroup;gpasswd -a test testgroup;gpasswd -A test testgroup;logout

ps:其中sudo –i是因为有大量需要用管理员权限的命令,为了减少输入sudo的麻烦,但最后记得用logout命令注销管理员登陆。

 

常见的账户管理命令

1、vipw、vigr

2、pwck

3、grpck

4、id

5、finger、chfn、chsh

6、whoami

7、su

8、newgrp

 

你可能感兴趣的:(Linux)