Linux /etc/shadow(影子文件)内容详解

1、/etc/shadow 是干嘛用的?

/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。

早期的 UNIX 密码放在 /etc/passwd 文件中,由于该文件允许所有用户读取,易导致用户密码泄露,因此从 /etc/passwd 文件中分离出来,并单独放到了此文件中。/etc/shadow 文件只有 root 用户拥有读权限,保证了用户密码的安全性。

我们先看看 /etc/shadow 文件中有什么吧

root:!:17826:0:99999:7:::
daemon:*:17737:0:99999:7:::
bin:*:17737:0:99999:7:::
...太多了,省略一部分...
skx:$1$jP$V1agVNyLfEYwNQLc6IrJt0:17826:0:99999:7:::
lilei:$6$zvt9aWzy$aoZDNPL0.mXFfsJczn.9gZtHZwmFTAFIbe4qHZd48zeB1mIka7jOsrmGvGMBV8LUV.iUdr6bk0hQZyGSOPiTy/:18420:0:99999:7:::

文件中每行代表一个用户,使用 “:” 分隔,每行的用户信息有 9 个字段,格式如下:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

下面进行详细介绍

2、字段详解

2.1 用户名

root, skx, lilei 这些都是用户。

2.2 加密密码

这里保存的是真正加密的密码,以 lilei 的密码为例

$6$zvt9aWzy$aoZDNPL0.mXFfsJczn.9gZtHZwmFTAFIbe4qHZd48zeB1mIka7jOsrmGvGMBV8LUV.iUdr6bk0hQZyGSOPiTy/

这个密码,是单向不可逆的。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。

注意,这串密码产生的乱码不能手工修改,如果手工修改,系统将无法识别密码,导致密码失效。很多软件透过这个功能,在密码串前加上 “!”、"*" 或 “x” 使密码暂时失效。

所有伪用户的密码都是 “!!” 或 “*”,代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 “!!”,代表这个用户没有密码,不能登录。

2.3 最后一次修改时间

此字段表示最后一次修改密码的时间,数字的含义是从 1970 年 1 月 1 日到现在的天数,1970 年 1 月 1 日作为 1,过一天加 1,上面 root 账号最后一次修改时间为 17826,这是哪一天呢,可以使用如下命令进行换算:

root@ubuntu:~# date -d "1970-01-01 17826 days"
2018年 10月 22日 星期一 00:00:00 +08

2.4 最小修改时间间隔

设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是 0 的话,则没有限制

2.5 密码有效期

该字段的默认值为 99999,也就是 273 年,可认为是永久生效。如果改为 90,则表示密码被修改 90 天之后必须再次修改,否则该用户即将过期。可以通过这个字段强制用户定期修改密码。

2.6 密码需要变更前的警告天数

密码快过期了,系统就会给出警告了,提醒用户 “再过 n 天你的密码就要过期了,请尽快重新设置你的密码!”。该字段的默认值是 7。

2.7 密码过期后的宽限天数

在密码过期后,不是立即失效,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。

假设这个字段设置为 10,则代表密码过期 10 天后失效;如果是 0,则代表密码过期后立即失效;如果是 -1,则代表密码永远不会失效。

2.8 账号失效时间

过了这个日期账号就无法使用。使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段通常被使用在具有收费服务的系统中。

2.9 保留

这个字段目前没有使用,等待新功能的加入。

参考:http://c.biancheng.net/view/840.html

猜你喜欢

转载自blog.csdn.net/happyjacob/article/details/109701906