Linux中/etc/passwd 和 /etc/shadows 詳解


linux操作系統上的用戶如果需要登錄主機,當其輸入用戶名和密碼之后:

  1. 首先在/etc/passwd文件中查找是否有你的賬號,如果沒有無法登錄,如果有的話將該用戶的UID和GID讀出來,此外將此用戶的shell設置也一並讀出。
  2. 然后根據UID到/etc/shadow文件中去尋找相應用戶的密碼,如果匹配一致
  3. 進入shell控制的階段。

下面我們詳細解釋這兩個文件:

 一:/etc/passwd   

root@kali:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
test:x:1000:1000::/home/test:/bin/sh

字段之間用 :分開.

字段 含義
1 用戶名
2 用戶的密碼原來直接存儲在第二字段,但是為了安全,最后專門有了/etc/shadow文件,現在默認用x替代
3 用戶的uid,一般情況下root為0,1-499默認為系統賬號,有的更大些到1000,500-65535為用戶的可登錄賬號,有的系統從1000開始。
4 用戶的gid,linux的用戶都會有兩個ID,一個是用戶uid,一個是用戶組id,在我們登錄的時候,輸入用戶名和密碼,其實會先到/etc/passwd查看是否有你輸入的賬號或者用戶名,有的話將該賬號與對應的UID和GID(在/etc/group中)讀出來。然后讀出主文件夾與shell的設置,然后再去檢驗密碼是否正確,正確的話正常登錄。
5 用戶的賬號說明解釋
6 用戶的家目錄文件夾
7 用戶使用的shell,如果換成/sbin/nologin/就是默認沒有登錄環境的。

 二:/etc/shadow

root@kali:~# cat /etc/shadow
root:$6$DUiJ86eR$qR8rjOj3wK0niIGnFxatv/hw5/198D8kIVYa.RjxvdWgZMrPSrVU4tcio0G/vRvVoGY5AYOKziVo9kFVIgnYS1:17631:0:99999:7:::
daemon:*:17557:0:99999:7:::
bin:*:17557:0:99999:7:::
sys:*:17557:0:99999:7:::
sync:*:17557:0:99999:7:::
games:*:17557:0:99999:7:::
man:*:17557:0:99999:7:::
字段 含義
1 用戶名
2 用戶的密碼加密字段
3 密碼已經使用的日期(從1970-01-01開始,為什么?因為unix1969年發布雛形,基於當時對系統的考慮,就這樣了)
4 密碼最少多少天之后可以修改(例子中是3天之后,也就是修改一次3天之后才能再次修改)
5 密碼多少天之后必須修改(例子中99999就是表明可以一直不用修改密碼)
6 密碼修改之前幾天提醒我修改(例子中是7天之前)
7 要是沒有修改延長幾天(例子中延長3天)
8 無論怎樣到這個時間過期(例子中的時間從1970-01-01算)
9 保留字段,目前無含義

轉載自:https://blog.csdn.net/yangbodong22011/article/details/50753906


免責聲明!

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



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