linux中设置密码最大有效期限用chage -m命令,如sudo chage -m 90 username设90天有效期,/etc/login.defs的pass_max_days仅影响新用户,配合-w和-i可优化提示与宽限期。

在 Linux 中设置密码的最大有效期限,核心是用 chage -M 命令。这个参数控制“密码本身能用多久”,不是账户失效时间,也不影响登录权限——只决定用户必须改密的截止点。
对单个用户设最大有效期(最常用)
管理员需用 root 或 sudo 权限执行:
- sudo chage -M 90 username:设该用户密码最多使用 90 天,到期后首次登录会强制要求修改
- sudo chage -M 0 username:密码立即过期,下次登录就必须改密(常用于新建账号后首次启用)
- sudo chage -M -1 username 或 sudo chage -M 99999 username:密码永不过期(不推荐,不符合等保或企业安全策略)
/etc/login.defs 只影响新用户
编辑 /etc/login.defs 中的 PASS_MAX_DAYS 参数,例如:
- PASS_MAX_DAYS 90:此后用 useradd 创建的新用户,默认密码有效期就是 90 天
- 已有用户完全不受此设置影响,必须单独运行 chage -M 才生效
配合其他参数避免体验断层
光设 -M 容易让用户措手不及。建议组合使用:
- sudo chage -M 90 -W 7 -I 14 username:90 天有效期,提前 7 天开始提示,过期后还有 14 天宽限期(可登录但必须改密)
- -W 值必须小于 -M,否则警告不会触发
- -I 0 表示密码一过期就锁账户,容易引发误报和运维求助,慎用
验证是否生效
执行以下命令查看当前设置:
- sudo chage -l username:重点看 Maximum number of days between password change 字段
- 输出中 Password expires 是根据 Last password change 和 -M 自动算出的绝对日期,可据此核对逻辑是否正确











