一、Linux /etc/gshadow文件
/etc/passwd 文件存储用户基本信息,同时考虑到账户的安全性,将用户的密码信息存放另一个文件 /etc/shadow 中。本节要将的 /etc/gshadow 文件也是如此,组用户信息存储在 /etc/group 文件中,而将组用户的密码信息存储在 /etc/gshadow 文件中。
1、 vim Linux /etc/gshadow查看
文件中,每行代表一个组用户的密码信息,各行信息用 ":" 作为分隔符分为 4 个字段,每个字段的含义如下:
组名:加密密码:组管理员:组附加用户列表
2、字段解释
(1)组名
同 /etc/group 文件中的组名相对应。
(2)组密码
对于大多数用户来说,通常不设置组密码,因此该字段常为空,但有时为 "!",指的是该群组没有组密码,也不设有群组管理员。
(3)组管理员
从系统管理员的角度来说,该文件最大的功能就是创建群组管理员。那么,什么是群组管理员呢?考虑到 Linux 系统中账号太多,而超级管理员 root 可能比较忙碌,因此当有用户想要加入某群组时,root 或许不能及时作出回应。这种情况下,如果有群组管理员,那么他就能将用户加入自己管理的群组中,也就免去麻烦 root 了。不过,由于目前有 sudo 之类的工具,因此群组管理员的这个功能已经很少使用了。
(3)组中的附加用户
该字段显示这个用户组中有哪些附加用户,和 /etc/group 文件中附加组显示内容相同。
二、Linux初始组和附加组
一个用户可以所属多个群组,并同时拥有这些群组的权限,这就引出了初始组(有时也称主组)和附组。/etc/passwd 文件中每个用户信息分为 7 个字段,其中第 4 字段(GID)指的就是每个用户所属的初始组,也就是说,当用户一登陆系统,立刻就会拥有这个群组的相关权限。
1、实例说明
我们新建一个用户 lamp,并将其加入 users 群组中,执行命令如下:
2、实例解释
可以看到,在 etc/passwd 文件中,zxr2016 用户所属的 GID(群组 ID)为 1001,通过搜索 /etc/group 文件得知,对应此 GID 的是 zxr2016 群组,也就是说,群组是 zxr2016用户的初始组。
zxr2016群组是添加 zxr2016用户时默认创建的群组,在 root 管理员使用 useradd 命令创建新用户时,若未明确指定该命令所属的初始组,useradd 命令会默认创建一个同用户名相同的群组,作为该用户的初始组。
正因为 zxr2016群组是 zxr2016用户的初始组,该用户一登陆就会自动获取相应权限,因此不需要在 /etc/group 的第 4 个字段额外标注。但是,附加组就不一样了,从例子中可以看到,我们将 zxr2016用户加入 zxr群组中,由于 zxr这个群组并不是 zxr2016的初始组,因此必须要在 /etc/group 这个文件中找到 zxr那一行,将 zxr2016这个用户加入第 4 段中(群组包含的所有用户),这样 zxr2016用户才算是真正加入到 zxr这个群组中。
在这个例子中,因为 zxr2016用户同时属于 zxr2016和zxr两个群组,所在,在读取\写入\运行文件时,只要是 zxr和 zxr2016群组拥有的功能,zxr2016用户都拥有。
一个用户可以所属多个附加组,但只能有一个初始组。那么,如何知道某用户所属哪些群组呢?使用 groups 命令即可。例如,我们现在以 lamp 用户的身份登录系统,通过执行如下命令即可知晓当前用户所属的全部群组:
[root@localhost ~]# groups
lamp users
通过以上输出信息可以得知,zxr2016用户同时属于 zxr2016群组和 zxr群组,而且,第一个出现的为用户的初始组,后面的都是附加组,所以 zxr2016用户的初始组为 zxr2016群组,附加组为 zxr群组。
三、/etc/login.defs
/etc/login.defs 文件用于在创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等。需要注意的是,该文件的用户默认配置对 root 用户无效。并且,当此文件中的配置与 /etc/passwd 和 /etc/shadow 文件中的用户信息有冲突时,系统会以/etc/passwd 和 /etc/shadow 为准。读者可自行使用 vim /etc/login.defs
命令查看该文件中的内容,表 1 中对文件中的各个选项做出了具体的解释。
设置项 | 含义 |
---|---|
MAIL_DIR /var/spool/mail | 创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱,比如 lamp 用户的邮箱是 /var/spool/mail/lamp。 |
PASS_MAX_DAYS 99999 | 密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。 |
PASS_MIN_DAYS 0 | 表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。 |
PASS_MIN_LEN 5 | 指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。 |
PASS_WARN_AGE 7 | 指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。 |
UID_MIN 500 | 指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始。注意,如果手工指定了一个用户的 UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500~549 之间的 UID 没有使用。 |
UID_MAX 60000 | 指定用户最大的 UID 为 60000。 |
GID_MIN 500 | 指定最小 GID 为 500,也就是在添加组时,组的 GID 从 500 开始。 |
GID_MAX 60000 | 用户 GID 最大为 60000。 |
CREATE_HOME yes | 指定在创建用户时,是否同时创建用户主目录,yes 表示创建,no 则不创建,默认是 yes。 |
UMASK 077 | 用户主目录的权限默认设置为 077。 |
USERGROUPS_ENAB yes | 指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组,此项的默认值为 yes。 |
ENCRYPT_METHOD SHA512 | 指定用户密码采用的加密规则,默认采用 SHA512,这是新的密码加密模式,原先的 Linux 只能用 DES 或 MD5 加密。 |