/etc/shadow 字段
存储了Linux系统中所有用户的密码信息.
/etc/shadow 只有root用户拥有读权限.
passwd 保存的是账号,shadow 保存的是账号的密码等.
xiaozhi:$1$qQIIX04U$10gkSJgHEehwgS2mX/NHE.:18765:0:99999:7:::
语法:
login:encyrptedpassword:lastchangedate:min-age:max-age:warning:inactivity:expiration-date:reserved
login:账号名称
encyrptedpassword:加密密码的占位符。显然与真实的密码没有任何相似之处。如有 * 或 ! 在,表示账户被锁定或密码已过期,不能登录。
lastchangedate:是一个以 Unix 时间开始的天数表示的日期。给出上次修改密码的日期的时间。如果为0,下次登录时必须更改密码。
min-age:只有当日期值为 min-age + lastchangedate 时才能更改密码。如果为空,随时更改。
max-age:当日期值为 max-age + lastchangedate 时必须更改密码。它实际上是密码过期的日期。对于空密码,过期日期毫无意义,因此不需要 max-age、warning 和 inactivity 字段。为99999 (273年)则没有限制。
warning:当日期变为lastchangedate+max-age-warning 或密码警告期已开始时,将警告用户更改密码。如为 0 或空白(空),则没有警告期。
inactivity:当密码过期时,用户仍然可以更改其密码,直到不活动天数为止。如果未填写此字段,则没有不活动期。
expiration-date:这是用户帐户到期的日期。自即日起,该账户将无法登录。如果此字段为空,则该帐户永远不会过期。另外,请勿在此处使用“0”值。
reserved:保留。
encyrptedpassword 字段格式:
$type$salt$encrypted
单向不可逆。
type是提示符,salt是随机生成的字符串,encrypted是明文密码和salt通过crypt函数加密后的结果。
type用来标识采用了哪种加密方式:
1 代表采用了MD5加密方式
2 Blowfish,是最早的版本,有一些缺陷,不推荐使用
2a Blowfish,是修复了一些缺陷后的版本,但仍然有一些问题,不推荐使用
2b Blowfish,是修复了2a中的问题后的版本,是安全、常用的版本
2y Blowfish,Eksblowfish版本
y 是Yescrypt加密方式的前缀,是Blowfish加密方式的一个变种,提供了更高的安全性和性能。
5 代表采用了SHA256加密方式
6 代表采用了SHA512加密方式
目前是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。等级更高,更安全。
"salt" 代表 salt 中 "$type$" 后面最多 16 个字符。 密码字符串的加密部分是实际计算的密码, 这个字符串的大小是固定的:
MD5 22 个字符
SHA-256 43 个字符
SHA-512 86 个字符