shadow密碼文件


登錄Linux會要求輸入用戶名和密碼。通常本地文件中會存儲一份用戶密碼,並與用戶輸入對比,如果相同就允許用戶登錄。起初用戶密碼存儲與/etc/passwd中,但由於/etc/passwd必須供所有用戶讀取,因此為了避免密碼破譯,unix系統將加密后的密碼存儲於/etc/shadow中,僅供超級用戶可讀。

/etc/shadow中密碼格式:

$id$salt$encrypted

  id表示hash算法。起初密碼用DES算法加密,單隨着DES加密破解難度的降低,已用其他加密算法替代DES。在shadow文件中,密碼字段如果以“$”打頭,則表示非DES加密,如:

$1$2eWq10AC$NaQqalCk3

  即表示非DES加密密碼,而$1$表示使用了基於MD5的加密算法。

$2a$04$NZJWn7W2skvQRC5lW3H7q.ZTE8bz4xbC

  $2a$表示Blowfish算法。常見的標識與算法:

ID  算法
$1$  MD5
$2a$ Blowfish
$5$ SHA-256
$6$ SHA-512

 

/etc/passwd文件的格式:

username:passwd:UID:GID:full_name:directory:shell

  

從shadow文件中摘錄數行:

root:$1$TCVDVaiT$JC7TbKjvIZpIprdehWFH/1:15157:0:99999:7:::
bin:*:15157:0:99999:7:::
daemon:*:15157:0:99999:7:::

  /etc/shadow文件的每行由9個字段組成,以“:”作為字段分隔符。每個字段的說明:

1. 用戶名

2. 加密后的密碼。如果密碼是“*”或“!”,則表示不會用這個帳號來登錄(通常是一些后台進程)

3. 密碼最后修改時間。 從1970年1月1日起計算的天數。

4. 不可修改密碼的天數。 如果是0,則表示可以隨時修改密碼。如果是N,表示N天后才可修改密碼。

5. 密碼可以維系的天數。如果設置為N,表示N天后必須更新密碼。設置為99999通常表示無需更新密碼。

6. 在密碼必須修改前的N天,就開始提示用戶需要修改密碼。

7. 密碼過期的寬限時間。

8. 帳號失效時間。也是UNIX時間戳格式。

9. 保留字段。

 

 

pwconv系列命令

pwconv命令從/etc/passwd生成/etc/shadow。它將密碼從passwd文件中抽取出來放到shadow文件中。

運行pwunconv命令則會關閉shadow功能,並把加密密碼轉移到passwd中。

系統啟動時,就默認開啟了pwconv

1 ls -l /etc/passwd /etc /shadow
2 -rw-r--r-- 1 root root   2342 Mar 29 18:55 /etc/passwd
3 -rw-r----- 1 root shadow 1393 Mar 29 18:55 /etc/shadow

取root用戶對比兩個文件的記錄:

1 $ cat /etc/shadow | grep ^root
2 root:x:0:0:root:/root:/bin/bash
3 
4 $ cat /etc/shadow|grep ^root
5 root:$6$0fa52kBa$5rQfmjjrmvVmepfQylZINajIUp/cTWi9GjdgONbYVRPlstFbjD54DXUgA2yE5QxdWm0ZX4.z238E/IPv0yAxY0:15946:0:99999:7:::

關閉shadow:

1 $ pwunconv

此時shadow文件消失。

再次查看passwd文件:

1 cat /etc/passwd | grep ^root
2 root:$6$0fa52kBa$5rQfmjjrmvVmepfQylZINajIUp/cTWi9GjdgONbYVRPlstFbjD54DXUgA2yE5QxdWm0ZX4.z238E/IPv0yAxY0:0:0:root:/root:/bin/bash

可以看到shadow中的加密密碼被轉移到了passwd中。

運行pwconv,即可恢復shadow文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM