2017-07-08 34 views
0

我想驗證用戶標記的密碼。Unix檢查mkpasswd是否存儲在/ etc/shadow中

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 :::部分

我在做什麼錯?

回答

1

mkpasswd實用程序從密碼創建一個散列,但/etc/shadow不僅包含散列密碼;它還包含其他信息,包括登錄名和密碼年齡的詳細信息。每行應該總共有9個由冒號分隔的字段,但是一些字段可以留空(通常是)。

例如,​​是自1970年1月1日創建密碼(即2014年8月22日)以來的天數,99999表示密碼不需要在99,999天(約274年)內更改,而7意味着當你需要更改密碼時,你會得到一週的通知。 (雖然你可能會死。)

如果你正在驗證密碼,你可以檢查前兩個字段(名稱和密碼哈希),但你應該檢查其他字段以確保它沒有過期。

+0

感謝您的清晰。好答案。 –