按天数而不是指定日期重置密码到期日期

按天数而不是指定日期重置密码到期日期

有没有办法使用命令 passwd 或 chage 强制密码在命令执行后 90 天后过期?

我知道我可以按日期完成,例如:

chage -E "2014-07-31" userid

但我正在寻找一种通过数字而不是特定日期来完成此操作的方法。

谢谢你!

答案1

chage本身不处理日期差异,但您可以让 shell 处理该问题并给出自chage1970-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

答案2

RHEL 6.8

#set passwd max no days = 30
passwd username -x30

相关内容