了解 /etc/shadow 文件
Linux 系统上可以使用多种不同的身份验证方案。最常用和标准的方案是针对 /etc/passwd
执行身份验证
和/etc/shadow
文件。
/etc/shadow
是一个文本文件,包含系统用户的密码信息。它由用户 root 和用户组 shadow 拥有,权限 为 640。
/etc/shadow
格式
/etc/shadow
文件每行包含一个条目,每个条目代表一个用户帐户。您可以使用文本编辑器或 cat
之类的命令查看文件内容:
sudo cat /etc/shadow
通常,第一行描述 root 用户,然后是系统和普通用户帐户。新条目将附加在文件末尾。
/etc/shadow
文件的每一行包含九个冒号分隔的字段:
mark:$6$.n.:17736:0:99999:7:::
[--] [----] [---] - [---] ----
| | | | | |||+-----------> 9. Unused
| | | | | ||+------------> 8. Expiration date
| | | | | |+-------------> 7. Inactivity period
| | | | | +--------------> 6. Warning period
| | | | +------------------> 5. Maximum password age
| | | +----------------------> 4. Minimum password age
| | +--------------------------> 3. Last password change
| +---------------------------------> 2. Encrypted Password
+----------------------------------------> 1. Username
用户名。您登录系统时输入的字符串。系统上存在的用户帐户。
加密密码。密码使用
$type$salt$hashed
格式。$type
是加密哈希算法的方法,可以具有以下值:$1$
– MD5$2a$
– Blowfish$2y$
– Eksblowfish$5$
– SHA-256$6$
– SHA-512
如果密码字段包含星号(
*
)或感叹号(!
),用户将无法使用密码验证登录系统。但仍允许使用其他登录方法,如基于密钥的身份验证或切换到用户。在较旧的 Linux 系统中,用户的加密密码存储在
/etc/passwd
文件中。上次密码更改。这是上次更改密码的日期。天数自 1970 年 1 月 1 日(纪元日期)开始计算。
最短密码期限。更改用户密码之前必须经过的天数。通常它设置为零,这意味着没有最短密码期限。
密码最长期限。必须更改用户密码后的天数。默认情况下,该数字设置为
99999
。警告期。密码到期前的天数,在此期间警告用户必须更改密码。
不活动期。用户密码过期后、用户帐户被禁用之前的天数。通常该字段为空。
截止日期。帐户被禁用的日期。它表示为纪元日期。
没用过。该字段被忽略。它被保留以供将来使用。
除非您知道自己在做什么,否则不应手动编辑/etc/shadow
文件。始终使用专为此目的而设计的命令。例如,要更改用户密码,请使用 passwd
命令,要更改密码时效信息,请使用chage
命令。
示例条目
让我们看一下下面的例子:
linuxize:$6$zHvrJMa5Y690smbQ$z5zdL...:18009:0:120:7:14::
上面的条目包含有关用户“linuxize”密码的信息:
- 密码使用 SHA-512 加密(密码被截断以提高可读性)。
- 密码上次更改时间为 2019 年 4 月 23 日 -
18009
。 - 密码没有最短使用期限。
- 密码必须至少每 120 天更改一次。
- 用户将在密码到期日期前 7 天收到警告消息。
- 如果用户在密码过期14天内没有尝试登录系统,该帐户将被禁用。
- 没有帐户到期日期。
结论
/etc/shadow
文件保存有关加密用户密码的记录,以及其他密码相关信息。
如果您有任何问题或反馈,请随时发表评论。