/etc/shadow 文件存储了所有用户经过MD5加密后的密码,只有 root 用户拥有读权限,其他用户没有任何权限,很大程度上保证了用户密码的安全性。
root:$6$wzEwraa7$uWIr8KkUruw0ZQftsdoCOqwes/vGNbHDRY0rIc2etylXmxt/dJ8XYFRZmSMja6kIi5P50UN.hfmNviDUcGWY.1:19227:0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
shutdown:*:17834:0:99999:7:::
halt:*:17834:0:99999:7:::
mail:*:17834:0:99999:7:::
operator:*:17834:0:99999:7:::
games:*:17834:0:99999:7:::
ftp:*:17834:0:99999:7:::
nobody:*:17834:0:99999:7:::
systemd-network:!!:19216::::::
dbus:!!:19216::::::
polkitd:!!:19216::::::
tss:!!:19216::::::
abrt:!!:19216::::::
sshd:!!:19216::::::
postfix:!!:19216::::::
sec_man:$6$65f/l0Wc6nRfTcZK$7eDO5Qn2sjuWExFepzQFe5tyXgKIDKWSaH50gyBB0TWgDqIj58D9FAGWqawEjwZ4ayp8418xkESnxZEPwJoSC/::0:99999:7:::
同 /etc/passwd 文件一样,文件中每行代表一个用户,同样使用 ":" 作为分隔符,不同之处在于,每行用户信息被划分为 9 个字段。以root用户为例,每个字段的含义如下:
root:$6$wzEwraa7$uWIr8KkUruw0ZQftsdoCOqwes/vGNbHDRY0rIc2etylXmxt/dJ8XYFRZmSMja6kIi5P50UN.hfmNviDUcGWY.1:19227:0:99999:7:::
1. root 用户名
2.$6$wzEwraa7$uWIr8KkUruw0ZQftsdoCOqwes/vGNbHDRY0rIc2etylXmxt/dJ8XYFRZmSMja6kIi5P50UN.hfmNviDUcGWY.1 密码
所有伪用户的密码都是 "!!" 或 "*",代表没有密码且不可登录。当然,新创建的用户如果不设定密码,那么它的密码项也是 "!!",代表这个用户没有密码,不能登录。
密码由三段组成,$6开头的,表明是用SHA-512加密的,$1表明是用MD5加密的,$2是用Blowfish加密的,$5是用 SHA-256加密的;
$wzEwraa7表示加密算法所加的盐值;
$uWIr8KkUruw0ZQftsdoCOqwes/vGNbHDRY0rIc2etylXmxt/dJ8XYFRZmSMja6kIi5P50UN.hfmNviDUcGWY.1表示加密算法得到的密文;
3.19227 密码最后一次的修改时间
行业内认定unix诞生是1970.1.1,该值即为当前时间与该时间的天数差
4.0 最小时间间隔
指的是两次修改口令之间所需的最小天数。
5.99999 最大时间间隔
指的是口令保持有效的最大天数。
6.7 警告时间
密码从警告开始到失效的天数
7. 不活动时间
表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8. 失效时间
同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论密码是否过期,都再也无法使用。