如果你在 。密碼必須在到期前進行更改,並且登入到系統時會收到通知。
如果你很少使用自己的帳戶,那麼可能由於密碼過期而被鎖定。在許多情況下,這可能會在無需密碼登入的服務帳戶中發生,因為沒人會注意到它。
這將導致停止伺服器上設定的 cronjob/crontab。
如果如此,該如何緩解這種情況。
你可以寫一個 shell 指令碼來獲得有關它的通知,我們前一段時間為此寫了一篇文章。
它將給出天數,但是本文旨在在終端中給你實際日期。
這可以使用 chage
命令來實現。
chage
代表更改時效。它更改使用者密碼到期資訊。
chage
命令可以修改兩次密碼更改之間的天數,以及最後一次更改密碼的日期。
系統使用此資訊來確定使用者何時應更改密碼。
它還允許使用者執行其他功能,例如設定帳戶到期日期、在到期後將密碼設定為無效、顯示帳戶時效資訊、設定密碼更改之前的最小和最大天數以及設定到期警告天數。
如果要檢查 Linux 上特定使用者的密碼到期日期,請使用以下命令。
# chage -l daygeekLast password change : Feb 13, 2020Password expires : May 13, 2020Password inactive : neverAccount expires : neverMinimum number of days between password change : 7Maximum number of days between password change : 90Number of days of warning before password expires : 7
你可以直接對單個使用者使用 chage 命令,不過可能你對多個使用者使用時可能無效。
為此,你需要編寫一個小的 shell 指令碼。下面的 shell 指令碼可以列出新增到系統中的所有使用者,包括系統使用者。
# for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; done | paste -d " " - - | sed 's/Password expires//g'
你將得到類似以下的輸出,但是使用者名稱可能不同。
root : neverbin : neverdaemon : neveradm : neverlp : neversync : nevershutdown : neveru1 : Nov 12, 2018u2 : Jun 17, 2019u3 : Jun 17, 2019u4 : Jun 17, 2019u5 : Jun 17, 2019
下面的 shell 指令碼將顯示有到期日期的使用者列表。
# for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; done | paste -d " " - - | sed 's/Password expires//g' | grep -v "never"
你將得到類似以下的輸出,但是使用者名稱可能不同。
u1 : Nov 12, 2018u2 : Jun 17, 2019u3 : Jun 17, 2019u4 : Jun 17, 2019u5 : Jun 17, 2019