在Linux中,/etc/shadow配置文件作为/etc/passwd配置文件密码部分的补充文件使用,因此被称为影子文件。
比较两个配置文件,可以看出/etc/shadow文件的权限要比/etc/passwd文件严格很多,因此,用户密码是较关键的信息被保存在/etc/shadow配置文件中。
## passwd和shadow两个配置文件的权限比较
[root@localhost /]# ll /etc/passwd
-rw-r--r--. 1 root root 2545 5月 16 01:29 /etc/passwd
[root@localhost /]# ll /etc/shadow
----------. 1 root root 1682 5月 15 06:40 /etc/shadow
/etc/shadow
文件格式说明
配置文件中,每一行标识一个用户的关键信息,每一行有九个部分,每个部分通过“:”隔开,和/etc/passwd配置文件对应。 该配置文件需要重点保密,即使文件中的密码被加密过,也不应当随意传送。 实例:
root:DzSmpvxb4iarthxasdf2oklmoxaowemcxow:18754:0:99999:7:3::
第一部分:用户名
第二部分:加密密码
加密算法为SHA512散列加密算法。不同的用户,即使密码相同,加密后的字符串也不一样。 如果该部分内容为“!!”或“”代表没有密码,不能登录。 绝大多数的系统用户,该部分的内容均为“!!”或“”。
第三部分:密码最后一次修改日期
使用1970年1月1日作为标准时间,每过一天该部分的时间戳数值加1。
第四部分:下一次允许修改密码的时间间隔
需要和第三部分做比较,即第三部分时间戳加第四部分的数值得出的新的时间戳,为下一次允许修改密码的最早时间。
第五部分:密码有效期数
需要和第三部分做比较,即第三部分时间戳加第五部分的数值得出的新的时间戳,为密码失效时间。
第六部分:密码失效前Num天发出警告
和第五部分做比较,即密码失效前Num天,每次用户登录,系统都会发出修改密码的警告。
第七部分:密码过期后的宽限天数
0 或 空:代表密码过期后立即失效 -1:代表密码永远不会失效
第八部分:账号失效时间
时间戳格式,账号一失效,前面的字段也就不做判断了
第九部分:暂无作用,保留
## 时间戳计算
[root@localhost etc]# date -d "1970-01-01 18754 days" ## 显示1970-01-01过去18754天后时间
2021年 05月 07日 星期五 00:00:00 CST
## 计算1970-01-01至2020-05-13过去了多少天
[root@localhost etc]# echo $(($(date --date="2020/05/13" +%s)/86400+1))
18395