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 可以列出帳戶的過期資訊