我想验证密码(用户标记)。
sudo cat / etc / shadow | grep标记 标记:$ 6 $ $ bvY9mYW3 XdKkg0tluBghADi45V.RG1dTfctvnYdU.5J40nW8bh4UqpxtHp8uF8Zxx8U9mth9w0dvmgtVUrAtydQCvsivA1:16304:0:99999:7 :::
从结果($ 6)我知道密码是使用sha-512加密算法生成的,其中bvY9mYW3为盐。
使用
生成哈希密码时mkpasswd -m sha-256 -S bvY9mYW3 -s
我得到$ 6 $ bvY9mYW3 $ XdKkg0tluBghADi45V.RG1dTfctvnYdU.5J40nW8bh4UqpxtHp8uF8Zxx8U9mth9w0dvmgtVUrAtydQCvsivA1
几乎相同,但我错过了尾声:16304:0:99999:7 ::: part
我做错了什么?
答案 0 :(得分:1)
mkpasswd
实用程序会根据密码创建哈希,但/etc/shadow
不包含哈希密码;它还包含其他信息,包括登录名和密码年龄的详细信息。每一行应该有总共9个以冒号分隔的字段,但有些字段可以留空(通常是)。
例如,16304
是自1970年1月1日创建密码(即2014年8月22日)以来的天数,99999表示密码不需要更改99,999天(大约274年),7意味着当您需要更改密码时,您将获得一周的通知。 (虽然到那时你可能已经死了。)
如果你要验证密码,你可以检查前两个字段(名称和密码哈希),但你应该检查其他字段以确保它没有过期。