了解 /etc/shadow 文件
在 Linux 系统上可以使用几种不同的身份验证方案。最常用方法是对 /etc/passwd
和 /etc/shadow
文件执行身份验证。
/etc/shadow
是一个文本文件,其中包含有关系统用户密码的信息。它的所有者是用户 root 用户和组,并有 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
命令。
输入示例
让我们看下面的例子:
buzheng:$6$zHvrJMa5Y690smbQ$z5zdL...:18009:0:120:7:14::
上面的条目包含有关用户 “ buzheng 密码的信息:
- 密码使用 SHA-512 加密(密码被截断以提高可读性)。
- 密码最后一次更改为 2019 年 4 月 23 日 -
18009
。 - 没有最低密码年龄。
- 密码必须至少每 120 天更改一次。
- 用户将在密码到期日期前七天收到警告消息。
- 如果用户在密码过期后的 14 天之内未尝试登录系统,则该帐户将被禁用。
- 没有帐户过期日期。
结论
该 /etc/shadow
文件保留有关加密用户密码以及其他与密码有关的信息的记录。