写在前面的话
Linux下重要的文件shsadow,主要用来存储用户密码,我们先来看看文件内容吧!
这里先来解释一下
moddemod:$6$CuH2yeMBGqMEFPll$EWinnUxB4s.U9GcZTdDN8Ai/6CVly5EfR5NV9Ft1XkYOuI1YNSwE0DvHiujysreygl8awy.ffnguCGYbOnz5F/:18236:0:99999:7:::
moddemod
用户名$6$gV25d/32s9xT5hLD$h7S2wX4DFeWxwfAbkLpmOKOfTz0.5Fh8g.4XR4CQ25FZx5Roi8BY.FrT/Adm.NYdJqi1ExWi1n0jL3k5kr0031
加密后的用户密码18236
自上次修改密码后过去的天数(自1970年1月1日开始计算)0
多少天后可以修改密码99999
多少天后必须修改密码7
密码过期前多少天提醒更改密码密码过期后多少天禁用用户账户
用户被仅禁用的日期
预留字段
密码字段
下面我们主要来解析一下密码字段$6$gV25d/32s9xT5hLD$h7S2wX4DFeWxwfAbkLpmOKOfTz0.5Fh8g.4XR4CQ25FZx5Roi8BY.FrT/Adm.NYdJqi1ExWi1n0jL3k5kr0031
以$
符号分割,可以解析为$id$salt$hashed
id
密码的加密方式1
表示使用MD5算法2a
表示使用Blowfish算法2y
表示使用另外一种Blowfish算法5
表示使用SHA-2566
表示使用SHA-512算法
salt
表示加密时候使用的salthashed
密码部分
即 使用SHA-512
算法加密,使用的salt为gV25d/32s9xT5hLD
, 加密后的结果为h7S2wX4DFeWxwfAbkLpmOKOfTz0.5Fh8g.4XR4CQ25FZx5Roi8BY.FrT/Adm.NYdJqi1ExWi1n0jL3k5kr0031
当然对于密码字段还村其他情况
- 该字段留空表示没有密码
!
表示该用户被锁,被锁用户无法登录!!
表示该用户从来没设置过密码
现在回头去看上面的shadow文件内容截图就完全明白了…
openssl
下面我们利用openssl
这个工具来生成如上的密码
openssl passwd -1 -salt '<salt>' '<plaintext>'
注意是数字1
而不是字母l
, 我们发现就是MD5加密
把1换成6就是SHA-512加密了
该密码就是我们上面的查看的shadow的密码字段啦,当然也就是我本机的电脑密码了…