Linux
按天數重置密碼到期日期,而不是指定日期
有沒有辦法使用命令 passwd 或 chage 強制密碼在命令執行後 90 天過期?
我知道我可以按日期完成,例如:
chage -E "2014-07-31" userid
但我正在尋找一種方法來使用數字而不是特定日期。
謝謝!
chage
它本身不處理日期差異,但您可以讓外殼處理它並給出自chage
1970-01-01 以來的天數,而不是 YYYY-MM-DD 日期表示:chage -E $(( $(date +%s)/3600/24 + 90 )) userid
(用任意天數替換 90。)
更改密碼而不是帳戶的到期日期有點棘手 - 事實上,您無法為密碼設置實際的到期日期,只能設置最長期限(使用
chage -M
)。要計算密碼從現在起 90 天后過期所需的最長期限,我們需要再跳過幾個環節:
userid=johndoe pwd_age=$(grep "^$userid:" /etc/shadow | cut -d: -f 3) now=$(( $(date +%s) / 3600 / 24 )) age_at_expiry_date=$(( $now + 90 - $pwd_age )) chage $userid -M $age_at_expiry_date
如果你不介意它相當複雜,你甚至可以將它組合成一個單行:
userid=johndoe chage $userid -M $(( $(date +%s) / 3600 / 24 + 90 - $(grep "^$userid:" /etc/shadow | cut -d: -f 3) ))
如果您不介意覆蓋上次更改密碼的日期,您可以
chage -M 90 -d $(date +%F) userid