1. 程式人生 > >linux-詳細解析密碼檔案passwd與shadow

linux-詳細解析密碼檔案passwd與shadow

輸入命令:head -n 4 /etc/passwd

輸出:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

以:隔開,相應的欄位含義如下:

使用者名稱: 密碼 : uid  : gid :使用者描述:家目錄:登陸shell

其中密碼都加了密,並存放在/etc/shadow檔案中了。

head -n 4 /etc/shadow | sed 4a$(tail -1 /etc/shadow) #需要root許可權,取前4行及最後一行

root:$6$v3gjfoY7$oKrVCSFnLQFiUlEbEdZn.t9PVZ0NgSV/6AmfarNrZp8BkWdIzYi1lb0fwQtb73/mo83z9jem2OSJLX6EU3EmR/:15847:0:99999:7:::
daemon:*:14728:0:99999:7:::
bin:*:14728:0:99999:7:::
sys:*:14728:0:99999:7:::
rose:$6$tDmg2PPz$7a.qIV9dToZtTomvLnQitMWEGNLDW1ZjMQmadjE5iXeNGsUrTy4q5UEP8UVBAzqFcKOlSScBRwg0/wkks15dq/:15848:0:7:7:15849:15851:

各欄位的含義如下:

登入名:加密口令:最後一次修改時間:密碼保留最短時間:密碼過期的時間:密碼過期前警告的天數:過期後的寬限天數:帳號失效時間:保留欄位
1)“登入名”是與/etc/passwd檔案中的登入名相一致的使用者賬號
2)“口令”欄位存放的是加密後的使用者口令字,如果為空,則對應使用者沒有口令,登入時不需要口令;如果含有不屬於集合{./0-9A-Za-z}中的字元,則對應的使用者不能登入。
3)“最後一次修改時間”以從某個時刻起,到使用者最後一次修改口令時的天數來表示。時間起點對不同的系統可能不一樣。例如在SCOLinux中,這個時間起點是1970年1月1日。
4)“密碼保留最短天數” :在這幾天內不得需要密碼,若為0表示隨時可以修改。
5)“密碼過期天數” :從上次修改密碼的日期算起,過了x天后,密碼就過期了,注意過期不一定就不能登入了,還要看第七個屬性判斷。
6)“密碼過期前警告的天數” :密碼過期前x天都會提示你修改密碼。
7)“過期後的寬限天數” 密碼過期那天算起,在x天內還可以登入,但系統強制你修改密碼,如果為0,密碼一旦過期了就直接失效,不能再登入了。
8)“帳號過期時間” 過了這時間後,帳號被禁用。以1970-01-01以日期到結束日期的天數來表示。

具體含義及修改命令如下表:

含義 相應修改命令 備註
 1  登入名
 2  加密口令 passwd
 3  最後一次修改時間 Last password change --lastday chage -d 2013-05-25 userName 也可用從1970-01-01算起的天數表示
如chage -d 15845 userName
 4  密碼保留最短天數 Minimum number of days between password change --mindays chage -m 2
 5  密碼過期天數 Maximum number of days between password change --maxdays chage -M 10
 6  密碼失效前警告的天數 Number of days of warning before password expires --warndays chage -W 7
 7  過期後的寬限天數 set password inactive after expiration to INACTIVE --inactive chage -I 5
 8  帳號過期時間 Account expires --expiredate chage -E 2013-06-10 userName 也可用從1970-01-01算起的天數表示
 9 保留欄位 - -

chage -l 可以列出帳戶的過期資訊