在 Linux 上檢視和設定密碼時效

2020-03-27 10:21:00

使用正確的設定,可以強制 Linux 使用者定期更改密碼。以下是檢視密碼時效以及如何更改其中設定的方法。

可以將 Linux 系統上的使用者密碼設定為永久或設定過期時間,以讓人們必須定期重置它們。出於安全原因,通常認為定期更改密碼是一種好習慣,但預設並未設定。

要檢視和修改密碼時效,你需要熟悉幾個重要的命令:chage 命令及其 -l 選項,以及 passwd 命令及其 -S 選項。本文會介紹這些命令,還有其他一些 chage 命令選項來設定密碼時效。

檢視密碼時效設定

確定某個特定帳戶是否已設定密碼時效的方法是使用如下 chage 命令。請注意,除了你自己的帳戶以外,其他任何帳戶都需要 root 許可權。請注意下面的密碼到期日期。

$ sudo chage -l doryLast password change                                    : Mar 15, 2020Password expires                                        : Jun 13, 2020    <==Password inactive                                       : neverAccount expires                                         : neverMinimum number of days between password change          : 10Maximum number of days between password change          : 90Number of days of warning before password expires       : 14

如果未應用密碼時效,那麼帳戶資訊將如下所示:

$ sudo chage -l nemoLast password change                                    : Jan 14, 2019Password expires                                        : never         <==Password inactive                                       : neverAccount expires                                         : Mar 26, 2706989Minimum number of days between password change          : 0Maximum number of days between password change          : 99999Number of days of warning before password expires       : 7

你也可以使用 passwd -S 命令檢視某些資訊,但是你需要知道輸出中的每個欄位代表什麼:

dory$ passwd -Sdory P 03/15/2020 10 90 14 -1

這裡的七個欄位代表:

  • 1 – 使用者名稱
  • 2 - 帳戶狀態(L = 鎖定,NP = 無密碼,P = 可用密碼)
  • 3 – 上次密碼更改的日期
  • 4 – 可更改最低時效(如果沒有這麼多天,則不能更改密碼)
  • 5 – 最長時效(這些天後,密碼必須更改)
  • 6 – 密碼過期前提前警告的天數
  • 7 – 密碼過期後鎖定之前的天數(設為無效)

需要注意的一件事是,chage 命令不會顯示帳戶是否被鎖定;它僅顯示密碼時效設定。另一方面,passwd -S 命令將告訴你密碼被鎖定的時間。在此例中,請注意帳戶狀態為 L

$ sudo passwd -S dorothydorothy L 07/09/2019 0 99999 7 10

通過將 /etc/shadow 檔案中通常包含密碼的“雜湊”欄位變為 !,從而達成鎖定的效果。

$ sudo grep dorothy /etc/shadowdorothy:!:18086:0:99999:7:10::    <==

帳戶被鎖定的事實在 chage 輸出中並不明顯:

$ sudo chage -l dorothyLast password change                                    : Jul 09, 2019Password expires                                        : neverPassword inactive                                       : neverAccount expires                                         : neverMinimum number of days between password change          : 0Maximum number of days between password change          : 99999Number of days of warning before password expires       : 7

密碼時效的一些選項

最常用的設定是最短和最長的天數。它們經常結合使用。例如,你可以設定一個密碼,使其最長不能使用超過 90 天(最大),然後新增一個有效期為一周或 10 天(最小)的密碼。這樣可以確保使用者不會在需要更改密碼後馬上改回以前的密碼。

$ sudo chage -M 90 -m 10 shark$ sudo chage -l sharkLast password change                                    : Mar 16, 2020Password expires                                        : Jun 14, 2020Password inactive                                       : neverAccount expires                                         : neverMinimum number of days between password change          : 10    <==Maximum number of days between password change          : 90    <==Number of days of warning before password expires       : 7

你還可以使用 -E 選項為帳戶設定特定的到期日期。

$ sudo chage -E 2020-11-11 tadpole$ sudo chage -l tadpoleLast password change                                    : Oct 15, 2019Password expires                                        : neverPassword inactive                                       : neverAccount expires                                         : Nov 11, 2020  <==Minimum number of days between password change          : 0Maximum number of days between password change          : 99999Number of days of warning before password expires       : 7

密碼時效可能是一個重要的選擇,只要它不鼓勵使用者使用過於簡單的密碼或以不安全的方式寫下來即可。有關控制密碼字元(例如,大小寫字母、數位等的組合)的更多資訊,請參考這篇關於的文章。