linux操作系統上的用戶如果需要登錄主機,當其輸入用戶名和密碼之后:
- 首先在/etc/passwd文件中查找是否有你的賬號,如果沒有無法登錄,如果有的話將該用戶的UID和GID讀出來,此外將此用戶的shell設置也一並讀出。
- 然后根據UID到/etc/shadow文件中去尋找相應用戶的密碼,如果匹配一致
- 進入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