用户与安全 -(2)Linux用户与组文件解析
前言
前面我们已经学习了Linux用户及组管理的概念及相关命令。今天接着带大家一起了解下与用户账号有关的系统配置文件。
用户及组的配置文件
在 Linux 系统中,所创建的用户及相关属性信息 (密码除外) 均存放在 /etc/passwd
文件中。由于所有用户对 passwd 文件均有读权限,因此密码信息并未保存在该文件中,而是保存在了 /etc/shadow
配置文件中。
/etc/passwd
/etc/passwd 是系统用户配置文件,存储的是用户账户及其相关信息(密码除外)。
在 passwd 配置文件中,一行定义一个用户账号,每行均有7
个不同的字段构成,各字段用“:”分割。
从左至右各字段的对应关系及其含义:
用户名:加密的密码:UID:GID:用户名全名或描述信息:用户主目录:登录shell
-
第一个字段(第一个root):用户名
-
第二个字段(x):加密的密码(为了安全,使用“x”占位代表)
-
第三个字段(第一个0):用户ID
-
第四个字段(第二个0):用户组ID
-
第五个字段(第二个root):用户的描述信息(默认用户的全名或空值)
-
第六个字段(/root):用户的主目录
-
第七个字段(/bin/bash):登录shell(字段为/sbin/nologin,表示禁止登录)
/etc/shadow
为安全起见,用户真实的密码采用 SHA512 散列加密算法,加密后保存在 /etc/shadow
配置文件中,该文件只有 root 用户可以读取。
说明:
-
第一个字段(root):用户名
-
第二个字段:加密密码(用户未设置密码时为!!,设置密码后
加密显示
) -
第三个字段:上次修改密码的时间距离1970年01月01日多少天
-
第四个字段:密码最短有效天数,0表示无限制
-
第五个字段:为密码最长有效天数(默认为99999天,可以理解为永不过期)
-
第六个字段:密码过期前的警告天数(默认过期前提前7天警告,但进入告警日期后仍可以使用旧密码登录系统)
-
第七个字段:密码过期后的宽限天数(密码过期后,预留几天给用户修改密码,此时已无法使用旧密码登录系统)
-
第八个字段:账户失效日期(从1970年01月01日起多少天后账户失效)
-
第九个字段:暂时保留未使用。
/etc/login.defs
/etc/login.defs文件用于在Linux创建用户时,对用户的一些基本属性做默认设置,例如指定用户的UID和GID的范围、用户的过期时间、密码最大长度,等等。
需要注意的是,该文件针对用户的默认配置对 root 用户无效。并且,当此文件中的配置与 /etc/passwd 和 /etc/shadow 文件中的用户信息有冲突时,系统会以/etc/passwd 和 /etc/shadow 为准。
用grep命令和-v参数过滤掉以#开头的行和空格行
参数说明:
-
MAIL_DIR /var/spool/mail
创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱,比如 cnLinuxer 用户的邮箱是 /var/spool/mail/cnLinuxer。
-
PASS_MAX_DAYS 99999
密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。
-
PASS_MIN_DAYS 0
两次修改密码的最小间隔时间
-
PASS_MIN_LEN 5
指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
-
PASS_WARN_AGE 7
密码过期前多少天开始提示
-
UID_MIN 500
指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始。注意,如果手工指定了一个用户的 UID 是 650,那么下一个创建的用户的 UID 就会从 651 开始,哪怕 500~549 之间的 UID 没有使用。
-
UID_MAX
60000
指定用户最大的 UID 为 60000。
-
GID_MIN
500
组ID的最小值
-
GID_MAX 60000
组ID的最大值
-
CREATE_HOME yes
使用useradd命令创建用户时是否创建用户家目录。
-
UMASK 077
用户主目录的权限,默认设置为 077。
-
USERGROUPS_ENAB yes
指定删除用户的同时是否删除用户组,准确地说,这里指的是删除用户的初始组,此项默认值为yes。
-
ENCRYPT_METHOD SHA512
指定用户密码采用的加密规则,默认采用 SHA512加密密码
/etc/group
用户组帐号信息保存在 /etc/group
配置文件中,任何用户均可读取。用户组的真实密码保存在 /etc/gshadow
配置文件中。
说明:
-
第一个字段:用户组的名称。 -
第二个字段:为组密码,这里的 x
仅仅是密码标识,真正加密后的组密码默认保存在/etc/gshadow
文件中。 -
第三个字段:为组ID,也叫作GID。
这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。
-
第四列为该用户组的 用户成员列表,各用户名间用逗号分割。
/etc/gshadow
/etc/gshadow 文件用于存放组用户的密码信息。
说明:
-
第一个字段:组名,同 /etc/group 文件中的组名相对应。 -
第二个字段:组密码,对于大多数用户来说,通常不设置组密码,因此该字段常为空,指的是该群组没有组密码,也不设有群组管理员。
用户设置密码是为了验证用户身份,那用户组设置密码是用来做什么的呢?
用户组密码主要是用来指定组管理员的,由于系统中的用户可能会非常多,root 用户可能没有时间进行用户的组调整,这时可以给用户组指定组管理员,如果有用户需要加入或退出某用户组,可以由该组的组管理员替代 root 进行管理。但是这项功能目前很少使用,我们也很少设置组密码。如果需要赋予某用户调整某个用户组的权限,则可以使用 sudo 命令代替。
-
第三个字段:组管理员
-
第四个字段:组中的附加用户,字段显示这个用户组中有哪些附加用户,和 /etc/group 文件中附加组显示内容相同。
到此,我们已经学习了/etc/passwd、/etc/shadow、/etc/group,它们之间的关系。可以这样理解;即先在 /etc/group 文件中查询用户组的 GID 和组名;然后在 /etc/passwd 文件中查找该 GID 是哪个用户的初始组,同时提取这个用户的用户名和 UID;最后通过 UID 到 /etc/shadow 文件中提取和这个用户相匹配的密码。
- 点赞
- 收藏
- 关注作者
评论(0)