本文简单介绍Linux用户和密码存储机制。
Linux用户信息保存在/etc/passwd
文件,普通用户即可读。使用cat /etc/passwd
查看文件内容,可以看到有类系用户信息:
mchen:x:1000:1000:mchen,,,:/home/mchen:/bin/bash
每个用户信息使用:
分隔,其中
mchen
:用户名x
: 表示密码保存在文件/etc/shadow
中- 第一个
1000
: 用户ID(UID) - 第二个
1000
: 用户组ID(GID) - 第二个
mchen
: 用户额外信息,例如用户全名等 /home/mchen
: 用户home directory的路径/bin/bash
: 用户使用的bash
上文提到如果用户设置了密码的话,密码保存在/etc/shadow
文件中。需要使用su
用户权限才能查看: sudo cat /etc/shadow
,可以看到每个用户的密码信息:
mchen:
$6$
JAnK7uhM$8/eo5ptVkIZbRyJ.HOGG4RHHgvl6iVpufBfM47hviWEeZ8C/aYA50x.wS5m.Uxu.PXUwEdd/7X0per5mWmo7v.:17655:0:99999:7:::
其中,
mchen
: 用户名- 密码使用
$id$salt$hash
方式保存$1$
: MD5$2a$
: BLOWFISH$2y$
: BLOWFISH$5$
: SHA-256$6$
: SHA-512
- 可以看到这里是
$6$
,所以是以SHA-512
保存的 JAnK7uhM
: salt(加盐)8/eo5ptVkIZbRyJ.HOGG4RHHgvl6iVpufBfM47hviWEeZ8C/aYA50x.wS5m.Uxu.PXUwEdd/7X0per5mWmo7v.
: 以SHA-512
保存的密码17655
: 上一次修改密码的天数(从1970/1/1开始计算)0
: 最短时间内需要修改密码的天数99999
: 最长时间需要修改密码的天数7
: 密码过期前提前通知的天数