這裡提供了 passwd
指令的使用教學,並且整理了一些常用範例可供參考。
在 Unix/Linux 系統中,passwd
這個指令可以用來變更使用者的密碼,對於一般使用者而言(非 root
),執行 passwd
之後,會需要輸入目前現行的密碼,才可以允許密碼的變更;而如果是 root
管理者的話,則可以在不需要現行密碼的情況下,變更任何使用者的密碼(包含 root
自己的密碼)。
passwd
指令的教學與實用範例。
一般的使用者執行 passwd
即可變更自己的密碼:
passwd
而變更密碼之前,必須先輸入現行密碼:
正在變更 gtwang 的密碼。 (目前的)UNIX 密碼: 輸入新的 UNIX 密碼: 再次輸入新的 UNIX 密碼: passwd:密碼已成功地變更
如果是 root
管理者的話,可以變更任何使用者的密碼:
sudo passwd gtwang
而且不需要輸入該使用者的現行密碼:
輸入新的 UNIX 密碼: 再次輸入新的 UNIX 密碼: passwd:密碼已成功地變更
如果變更 root
管理者的密碼,就跟一般使用者一樣直接執行 passwd
即可。
若要顯示密碼的狀態資訊,可以加上 -S
參數:
passwd -S
輸出為:
gtwang P 09/30/2015 0 99999 7 -1
這個輸出包含七個欄位:
L
)、無密碼(NP
)與可用密碼(P
)。如果是 root
管理者,則可以查看特定使用者的密碼資訊:
sudo passwd -S gtwang
關於密碼的各種期限問題,可以參考 SHADOW(5) 線上手冊。
root
管理者可以使用 -aS
參數查閱所有使用者的密碼狀態資訊:
sudo passwd -aS
輸出會類似這樣:
root L 04/30/2015 0 99999 7 -1 daemon L 04/22/2015 0 99999 7 -1 bin L 04/22/2015 0 99999 7 -1 sys L 04/22/2015 0 99999 7 -1 sync L 04/22/2015 0 99999 7 -1 games L 04/22/2015 0 99999 7 -1 man L 04/22/2015 0 99999 7 -1 lp L 04/22/2015 0 99999 7 -1 [略]
若要移除使用者的密碼,可以使用 -d
參數,並加上使用者的名稱:
sudo passwd -d gtwang
移除使用者的密碼之後,可以檢查一下狀態資訊:
sudo passwd -S gtwang
gtwang NP 09/30/2015 0 99999 7 -1
在密碼被移除之後,該使用者的帳號也會同時被停用,無法登入。
有時候因為某些原因(像是重新設定密碼之後),我們會希望使用者立刻更改自己的密碼,這時候我們可以使用 -e
參數:
sudo passwd -e gtwang
passwd: password expiry information changed.
檢查一下狀態資訊:
sudo passwd -S gtwang
gtwang P 01/01/1970 0 99999 7 -1
這時候如果使用者使用 SSH 登入的話,系統就會強制變更密碼:
ssh gtwang@192.168.0.1
gtwang@192.168.0.1's password: You are required to change your password immediately (root enforced) WARNING: Your password has expired. You must change your password now and login again! 正在變更 gtwang 的密碼。 (目前的)UNIX 密碼: 輸入新的 UNIX 密碼: 再次輸入新的 UNIX 密碼: passwd:密碼已成功地變更 Connection to 192.168.0.1 closed.
變更密碼之後,會自動斷線,強迫重新登入。
-l
參數可以鎖定使用者的密碼:
sudo passwd -l gtwang
檢查一下狀態資訊:
sudo passwd -S gtwang
輸出為:
gtwang L 09/30/2015 0 99999 7 -1
在鎖定之後,系統會在 /etc/shadow
的密碼欄位之前加上一個驚嘆號(!
),類似這樣:
gtwang:!$6$XZkm06BG$WkOtRLFncY3WSuLEXnu1yHYdWw0eJYcD.208K3CuhLEuZKL20IVZRkqrB.z2lNnEBW0bDEJ4wQ.e5gH8BB4EK0:16708:0:99999:7:::
而該使用者在密碼被鎖定的狀態下,無法變更自己的密碼。
如果要解除鎖定,可以使用 -u
參數:
sudo passwd -u gtwang
-n
參數可以設定密碼的最短變更間隔時間(minimum password age),例如:
sudo passwd -n 3 gtwang
這樣設定之後,gtwang
使用者至少每隔三天才能變更一次密碼。如果將密碼的最短變更間隔時間設定為 0
,就表示任何時間都可以自由變更密碼。
-x
參數則可以設定密碼的有效期限,例如設定一個密碼可以使用 90 天,讓 gtwang
這個使用者三個月就要換一次密碼:
sudo passwd -x 90 gtwang
-w
參數可以設定密碼過期前警告期間,例如將警告期間設定為 7 天:
sudo passwd -w 7 gtwang
這樣一來在 gtwang
使用者自己的密碼過期之前的一週開始,使用者在登入之後就會顯示密碼即將過期的警告訊息,提醒使用者盡快更改密碼。
當使用者的密碼過期之後,會有一段寬限期(也就是 inactivity period),讓使用者還可以繼續登入使用,而當寬限期過了之後還是沒有變更密碼的話,使用者就會無法登入。我們可以使用 -i
設定設定密碼過期後可使用的期間:
sudo passwd -i 10 gtwang
參考資料:Linux Techi