参考源
https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0
版本
本文章基于 CentOS 7.6
简介
由于 /etc/passwd 文件是所有用户都可读的,如果密码太简单或者规律比较明显的话,很容易被破解。
因此对安全性要求较高的 Linux 系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件就是 /etc/shadow 文件。
超级用户才拥有该文件读权限,这就保证了用户密码的安全性
/etc/shadow 中的记录行与 /etc/passwd 中的记录行是一一对应的,它由 pwconv
命令根据 /etc/passwd 中的数据自动产生。
pwconv
[root@sail etc]# cat /etc/shadow root:$6$tayfZCYF.$EaUXCh2NF1scPeygMBIRz1wvsdiCtCu3EPd1SqrApl.2etnpZ1SY42vS1XdGxAqn4rGbfr4JrwexJ96vZYvf6/:18925: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:!!:18088:::::: dbus:!!:18088:::::: polkitd:!!:18088:::::: sshd:!!:18088:::::: postfix:!!:18088:::::: chrony:!!:18088:::::: ntp:!!:18088:::::: tcpdump:!!:18088:::::: nscd:!!:18088:::::: admin:!!:18925:0:99999:7:::
它的文件格式与 /etc/passwd 类似,由若干个字段组成,字段之间用 : 隔开。
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
与 /etc/passwd 文件中的登录名相一致的用户账号。
加密后的用户口令字,长度为 13 个字符。
如果为空,则对应用户没有口令,表示登录时不需要口令。
如果含有不属于集合 { ./0-9A-Za-z } 中的字符,则对应的用户不能登录。
从某个时刻起,到用户最后一次修改口令时的天数。
时间起点对不同的系统可能不一样。
例如在 SCO Linux 中,这个时间起点是 1970年1月1日。
两次修改口令之间所需的最小天数。
口令保持有效的最大天数。
从系统开始警告用户到用户密码正式失效之间的天数。
用户没有登录活动但账号仍能保持有效的最大天数。
一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。
期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
这个字段目前没有使用,等待新功能的加入。