在Debian系统中,一般的 Unix 认证由 PAM(Pluggable Authentication Modules,即可插拔的验证模块)下的 pam_unix(8) 模块提供。它的三个重要文件分别是/etc/passwd、/etc/shadow和/etc/group,其中的条目使用“:”进行分隔。
一、/etc/passwd
下表展示了pam_unix(8) 使用的 3 个重要配置文件:
文件 | 权限 | 用户 | 组 | 说明 |
---|---|---|---|---|
/etc/passwd |
-rw-r--r-- |
root |
root |
(明文的)用户账号信息 |
/etc/shadow |
-rw-r----- |
root |
shadow |
安全加密的用户账号信息 |
/etc/group |
-rw-r--r-- |
root |
root |
组信息 |
“/etc/passwd” 包含下列内容:
... user1:x:1000:1000:User1 Name,,,:/home/user1:/bin/bash user2:x:1001:1001:User2 Name,,,:/home/user2:/bin/bash ...
这个文件中被 “:” 分隔的每项含义如下:
- 登录名
- 密码形式说明
- 数字形式的用户 ID
- 数字形式的组 ID
- 用户名或注释字段
- 用户家目录
- 可选的用户命令解释器
二、/etc/passwd
“/etc/passwd” 的第二项曾经被用来保存加密后的密码。在引入了 “/etc/shadow” 后,该项被用来说明密码形式。
下表展示了“/etc/passwd” 第二项的内容:
内容 | 说明 |
---|---|
(空) | 无需密码的账号 |
x | 加密后的密码保存在 “/etc/shadow ” |
“/etc/shadow” 包含下列内容。
... user1:$1$Xop0FYH9$IfxyQwBe9b8tiyIkt2P4F/:13262:0:99999:7::: user2:$1$vXGZLVbS$ElyErNf/agUDsm1DehJMS/:13261:0:99999:7::: ...
这个文件中被 “:” 分隔的每项含义如下:
- 登录名
- 加密后的密码(开头的 “$1$” 表示使用 MD5 加密。“*” 表示无法登录。)
- 最后一次修改密码的时间,其表示从 1970 年 1 月 1 日起的天数
- 允许用户再次修改密码的天数间隔
- 用户必须修改密码的天数间隔
- 密码失效前的天数,在此期间用户会被警告
- 密码失效后的天数,在次期间密码依旧会被接受
- 账号失效的时间,其表示从 1970 年 1 月 1 日起的天数
- …
三、/etc/group
“/etc/group” 包含下列内容。
group1:x:20:user1,user2
这个文件中被 “:” 分隔的每项含义如下。
- 组名称
- 加密后的密码(不会被真正使用)
- 数字形式的组 ID
- 使用 “,” 分隔的用户名列表
注意:
- “/etc/gshadow” 为 “/etc/group” 提供了与 “/etc/shadow” 相似的功能,但没有被真正地使用。
- 如果”auth optional pam_group.so” 这行添加到了”/etc/pam.d/common-auth”,并且在”/etc/security/group.conf” 里进行了设置,一个用户的实际组就可以被动态添加。