用户和用户组管理

来源:互联网 发布:算法导论pdf非扫描 编辑:程序博客网 时间:2024/05/22 01:35

1. 用户配置文件

1.1 用户信息文件 /etc/passwd

/etc/passwd 文件的权限是644,它的部分内容如下:

root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/sync

共有7个字段,中间用冒号分割。

第1个字段:用户名称

第2个字段:密码标志(密码存放在 /etc/shadow 文件中)

第3个字段:UID(用户ID)

0 : 超级用户(一般为root)1-499 : 系统用户(伪用户,不可删除和登陆)500-65535 : 普通用户(自行添加的用户)如果把普通用户的UID改为0,则该普通用户就会拥有超级用户的权限,但家目录不会变。

第4个字段:GID(用户初始组ID)

初始组: 指用户一建立就立刻拥有这个用户组的相关权限,每个用户只能有一个初始组。初始组的名称一般和用户名相同。附加组: 指用户可以加入多个其他的用户组,并拥有相关的组权限,附加组可以有多个。

第5个字段:用户说明(备注)

第6个字段:用户的家目录

超级用户: /root普通用户:/home/用户名

第7个字段:登录之后的shell

shell就是linux的命令解释器。在 /etc/passwd 文件中,除了标准shell是 /bin/bash 之外,还可以写成 /sbin/nologin(不可登录)。

1.2 影子文件 /etc/shadow

影子文件 /etc/shadow 的文件权限是000,其中保存了加密后的用户密码。

它的部分内容如下:

root:$6$AM4DdsqkD09LYvbq$ljcjuHOAz8oAowhIhqx6eYnUeER4zQPiTNr44p1GTK/MJmnpHbMSbmKdXa5EOVk/ssQt.y46XTqMRQB5Hw2Uj0:17116:0:99999:7:::bin:*:15980:0:99999:7:::daemon:*:15980:0:99999:7:::adm:*:15980:0:99999:7:::lp:*:15980:0:99999:7:::sync:*:15980:0:99999:7:::shutdown:*:15980:0:99999:7:::halt:*:15980:0:99999:7:::mail:*:15980:0:99999:7:::uucp:*:15980:0:99999:7:::operator:*:15980:0:99999:7:::games:*:15980:0:99999:7:::gopher:*:15980:0:99999:7:::ftp:*:15980:0:99999:7:::nobody:*:15980:0:99999:7:::dbus:!!:17116::::::vcsa:!!:17116::::::

共有9个字段,中间用冒号分割。

第1个字段:用户名

第2个字段:加密后的密码

加密算法升级为SHA512散列加密算法。如果密码是 "!!""*" ,表示没有密码,不能登录。

第3个字段:密码最后一次的修改日期

时间戳表示,使用1970年1月1日作为标准时间,每过一天,它的值加1。

第4个字段:禁止修改密码的时间间隔(和第3个字段相比,0表示没有限制)

第5个字段:密码的有效期(和第3个字段相比)

第6个字段:密码到期前提示修改的警告天数(和第5个字段相比)

第7个字段:密码过期后的宽限天数(和第5个字段相比)

0 : 表示密码过期后,立即失效,没有指明也等同于0。-1 :表示密码过期后,永远不会失效。

第8个字段:账号失效时间(时间戳表示)

第9个字段:保留字段

时间戳(以天为单位)的换算:

时间戳换算为日期:date -d "1970-01-01 17116 days"日期换算为时间戳:echo $(($(date --date="2017/01/25" +%s)/86400+1))

1.3 用户组信息文件 /etc/group

组信息文件 /etc/group 的权限为644,它的部分内容如下:

root:x:0:bin:x:1:bin,daemondaemon:x:2:bin,daemonsys:x:3:bin,admadm:x:4:adm,daemontty:x:5:disk:x:6:lp:x:7:daemonmem:x:8:

共有4个字段,中间用冒号分割。

第1个字段:组名称

第2个字段:组密码标志

第3个字段:GID(组ID)

第4个字段:组中的附加用户

1.4 用户组密码文件 /etc/gshadow

组密码文件 /etc/gshadow 的权限是000,它的部分内容如下:

root:::bin:::bin,daemondaemon:::bin,daemonsys:::bin,admadm:::adm,daemontty:::disk:::lp:::daemonmem:::

共有4个字段,中间用冒号分割。

第1个字段:组名称

第2个字段:组密码(很少用)

第3个字段:组中的管理员用户名称

第4个字段:组中的附加用户

2. 用户管理相关文件

2.1 用户的家目录

  • 超级用户:/root,所有者和所属组都是root,权限是550
  • 普通用户:/home/用户名,所有者和所属组都是该用户名,权限是700

2.2 用户的邮箱

  • /var/spool/mail/用户名

2.3 用户模板目录

  • /etc/skel

当创建一个新用户时,用户模板目录中的文件(包括隐藏文件),会自动出现在用户的家目录中。

3. 用户管理命令

3.1 添加用户 useradd

命令格式:useradd [选项] 用户名

常见选项:

-u 用户ID:手工指定用户的UID(不推荐手工指定)-d 家目录:手工指定用户的家目录(不推荐手工指定)-c 用户说明:手工指定用户的说明(不推荐手工指定)-g 组名:手工指定用户的初始组(不推荐手工指定)-G 组名:指定用户的附加组(多个附加组中间用逗号分隔)-s shell:手工指定用户的登录shell。默认是/bin/bash。-r :创建一个系统用户

常见用法:

useradd user01useradd -r -g mysql -s /bin/false mysql

添加了一个新的用户之后,系统会默认自动创建用户的家目录、用户的初始组(组名和用户名相同)、用户的邮箱,而且 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 文件的内容也会随之自动更新。

添加一个新用户时,如果没有指定选项,则使用默认值。

用户默认值文件为 /etc/default/useradd,它的内容如下:

# useradd defaults fileGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes

相关说明:

GROUP:用户的默认组(现在的linux采用私有模式,该选项不会生效)HOME:用户的默认一级家目录INACTIVE:密码过期宽限天数(shadow文件的第7个字段)EXPIRE:密码失效时间(shadow文件的第8个字段)SHELL:默认的shellSKEL:用户的模板目录CREATE_MAIL_SPOOL:是否建立邮箱

还有一个用户默认值文件为 /etc/login.defs,内容较多,这里不作赘述。

3.2 设置用户密码 passwd

添加了用户后,一般都需要给该用户设置密码,否则,该用户就是不完整的,也就不能登录。

命令格式:passwd [选项] 用户名

该命令可用于设置或修改用户的密码,如果后面没有指定用户名,则表示给当前登录用户设置密码。

常见选项:

-S:查询用户密码的密码状态。仅root用户可用。-l:暂时锁定用户。仅root用户可用。-u:解锁用户。仅root用户可用。--stdin:通过管道符将输出的字符串作为用户的密码。

常见用法:

passwd user01只有超级用户才可以修改其他用户的密码,故只有超级用户才可以在后面指定用户名。passwd修改当前登录用户的密码。普通用户更改自己的密码时,必须遵守密码的复杂性原则。echo "123456" | passwd --stdin user01将user01的密码设置或修改为123456

3.3 修改用户信息 usermod

命令格式:usermod [选项] 用户名

常见选项:

-u 用户ID:修改用户的UID-c 用户说明:修改用户的说明信息-G 组名:修改用户的附加组-L:临时锁定用户-U:解锁

常见用法:

usermod -c "test user01" user01修改user01用户的说明信息usermod -G root user01将user01用户加入附加组root

3.4 修改用户密码状态 chage

命令格式:chage [选项] 用户名

常见选项:

-l:列出用户的详细密码状态-d 日期:修改密码最后一次的更改日期(shadow文件的第3个字段)-m 天数:两次密码的修改间隔(shadow文件的第4个字段)-M 天数:密码的有效期(shadow文件的第5个字段)-W 天数:密码过期前的警告天数(shadow文件的第6个字段)-I 天数:密码过期后的宽限天数(shadow文件的第7个字段)-E 日期:账号失效时间(shadow文件的第8个字段)

其实,通过vi命令修改shadow文件会更加方便。

常见用法:

chage -l user01查看user01用户的详细密码状态。chage -d 0 user01把密码最后一次的修改日期归0,这样用户一登录就必须修改密码。这条命令比较常用。

3.5 删除用户 userdel

命令格式:userdel [-r] 用户名

常见选项:

-r:删除用户的同时,删除用户的家目录

常见用法:

userdel -r user01删除user01用户,同时删除它的家目录。

删除用户实际上是对 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 文件中的相关行进行删除,同时还会删除用户的家目录和用户的邮箱。

3.6 查看用户ID信息 id

命令格式:id 用户名

常见用法:

id user01查看用户的UID、GID和组名(包括初始组和附加组)。

3.7 切换用户身份 su

命令格式:su [选项] 用户名

常见选项:

-:连带用户的环境变量一起切换-c 命令:仅执行一次命令,而不切换用户身份

超级用户切换为其他用户时不需要密码,而普通用户切换为其他用户时需要密码。

常见用法:

su user01切换为user01用户,但并不同时切换环境变量。这种用法会出现一些问题,故不推荐。su - user01完全切换为user01用户,同时切换环境变量。推荐使用。su - root -c "useradd user02"仅执行一次添加用户的命令,而不切换为root。

4. 用户组管理命令

4.1 添加用户组 groupadd

命令格式: groupadd [选项] 组名

常见选项:

-g 组ID:手工指定组的ID

常见用法:

groupadd testgroup01

4.2 修改用户组 groupmod

命令格式:groupmod [选项] 组名

常见选项:

-g 组ID:修改组的ID-n 新的组名:修改组的名称

常见用法:

groupmod -n testgroup02 testgroup01把组名testgroup01修改为testgroup02

4.3 删除用户组 groupdel

命令格式:groupdel 组名

注意:如果组中有初始用户,则不可使用该方法删除组。附加用户不会影响组的删除。

4.4 修改组中的成员 gpasswd

命令格式:gpasswd [选项] 组名

常见选项:

-a 用户名:向组中添加附加用户-d 用户名:把组中的附加用户删除

注意:gpasswd 只能对组中的附加用户进行添加或者删除操作。

常见用法:

gpasswd -a user01 root向root组中添加附加用户user01gpasswd -d user01 root把root组中的附加用户user01删除
0 0
原创粉丝点击