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

linux操做系統上的用戶若是須要登陸主機,當其輸入用戶名和密碼以後:java

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

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

 一:/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

字段之間用 :分開.shell

字段 含義
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安全

相關文章
相關標籤/搜索