前言
/etc/shadow 是 Linux 系统中存储用户加密密码的文件,每行对应一个用户的加密信息。该文件只有系统管理员 root 用户可以访问。
字段详解
该文件的每一行包含 9 个字段,以冒号 (“:”) 分隔
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
root:$6$ARS.45jV$FypZVaIMgzXohB6JDe6YkAoWOiUlj1nVXd0Fy6ugIovHn5ngt.QIL8FWZ5V/9KCUV.DfbK1WaAiXcsFIy7lmP/:16846:0:99999:7:::
如下
root:$6$ARS.45jV$FypZVaIMgzXohB6JDe6YkAoWOiUlj1nVXd0Fy6ugIovHn5ngt.QIL8FWZ5V/9KCUV.DfbK1WaAiXcsFIy7lmP/:16846:0:99999:7:::
bin:*:15628:0:99999:7:::
abhishek:$6$Kob9YWCa$cxyOOkYB4wDLo33PiHFjFJIJdn6FIphZAnLzJ.kzqW7sw2rnndu5YhxKiaFH8COj7YvxiLQjqCXTc5fm.1DTI.:16100:0:99999:7:::
apache:!!:16286::::::
orcl2:$6$DoCAd3Kj$uILiq2a2i6MCOU4A9QMI0GuS7j94pnhloaJeZwVHFgKcyFvrOlpamm5QgX7jOz7R88P/wg.4IY/WYfXPk37Rc0:19787:0:99999:7:::
1. 用户名
系统用户
2. 加密密码
Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全,是单向不可逆的。
在 /etc/shadow 文件中,密码字段的开头标记表示使用的哈希算法:
- $1$ 表示使用 MD5-based 加密(DES-based 加密是过时的)。
- $2$ 表示使用 Blowfish 加密。
- $5$ 表示使用 SHA-256 加密。
- $6$ 表示使用 SHA-512 加密。
如下,$6$ 表示密码算法是 SHA-512。紧跟着的 ARS.45jV 是一个随机的 salt,用于增加密码的安全性,最后是经过哈希计算后的密码值。
$6$ARS.45jV$FypZVaIMgzXohB6JDe6YkAoWOiUlj1nVXd0Fy6ugIovHn5ngt.QIL8FWZ5V/9KCUV.DfbK1WaAiXcsFIy7lmP/
如果密码字段为 * 或者两个 !! 表示密码被锁定或者禁用。
nobody:*:15628:0:99999:7:::
dbus:!!:16098::::::
3. 最后一次修改密码的时间
此字段表示最后一次修改密码的时间,数字的含义是从 1970 年 1 月 1 日到现在的天数,1970 年 1 月 1 日作为 1,过一天加 1,上面 root 账号最后一次修改时间为 16846,这是哪一天呢,可以使用如下命令进行换算。即最后一次修改密码的时间为:2016 年 2 月 15 日星期一
date -d "1970-01-01 16846 days"
4. 最小修改时间间隔
设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是 0 的话,则没有限制
5. 密码有效期
该字段的默认值为 99999,也就是 273 年,可认为是永久生效。如果改为 90,则表示密码被修改 90 天之后必须再次修改,否则该用户即将过期。可以通过这个字段强制用户定期修改密码。
6. 密码需要变更前的警告天数
密码快过期了,系统就会给出警告了,提醒用户 “再过 n 天你的密码就要过期了,请尽快重新设置你的密码!”。该字段的默认值是 7。
7. 密码过期后的宽限天数
在密码过期后,不是立即失效,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。
假设这个字段设置为 10,则代表密码过期 10 天后失效;如果是 0,则代表密码过期后立即失效;如果是 -1,则代表密码永远不会失效。
8. 账号失效时间
过了这个日期账号就无法使用。使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间。
9. 保留字段
这些字段是保留用于未来用途,通常为空。
shadow密码解密
将要解密的shadow文件中的hash所在行全部复制到shadow.txt中,准备一个字典pwd.txt
john --wordlist=pwd.txt shadow.txt
#显示已经成功破解的密码
john --show shadow.txt
成功解密出两个密码。
John the Ripper 会自动检测您的系统的 CPU 核心数量,并根据这个数量设置线程数,以充分利用系统资源进行密码破解。
参考:Linux /etc/shadow(影子文件)内容详解_unix /etc/shadow-CSDN博客