chage 是 linux 中查看和修改用户密码与账户生命周期策略的标准安全工具。执行 chage -l username 可查看上次改密时间、密码到期日、宽限期、账户禁用时间及密码最短/最长使用天数等关键信息;常用参数包括 -m(最大有效期)、-w(警告天数)、-m(最小间隔)、-i(不活动宽限期)、-e(账户过期日)、-d(强制首次登录改密);设置时需避免逻辑冲突,如 -w 必须小于 -m,-i 不应大于 -m;默认策略由 /etc/login.defs 配置,批量设置可用循环脚本,临期账户可通过 grep 筛选。

直接用 chage 查看和修改用户密码与账户生命周期策略,是 Linux 运维中最标准、最安全的做法。它不手动碰 /etc/shadow,所有操作可逆、有据可查。
快速查看用户策略状态
执行 chage -l username 即可一次性看到全部关键信息:
- Last password change:上次改密时间,影响密码是否已过期
-
Password expires:密码到期日,为
never表示永不过期 - Password inactive:密码过期后还能登录的宽限期截止日
- Account expires:账户整体禁用时间,到点后无法登录(哪怕密码还有效)
- Minimum/Maximum number of days:密码最短和最长使用天数
- Number of days of warning:密码到期前多少天开始提示用户
常用策略参数及设置方法
每个参数对应 /etc/shadow 中一个字段,必须按逻辑关系设置:
-
chage -M 90 username:密码最多用 90 天,超期后登录强制重设 -
chage -W 7 username:提前 7 天在登录时显示警告 -
chage -m 1 username:两次改密至少间隔 1 天(防频繁重置) -
chage -I 14 username:密码过期后还可登录 14 天,之后账户被锁 -
chage -E 2026-12-31 username:账户在 2026 年 12 月 31 日零点起禁用 -
chage -d 0 username:标记“上次改密时间为今天”,效果是下次登录必须改密
组合设置避免逻辑冲突
单设一个参数容易出问题,推荐组合使用并确保数值合理:
-
-W值必须小于-M,否则警告不会触发 -
-I不应大于-M,否则宽限期比有效期还长,语义混乱 - 账户过期
-E和密码过期-M应协同:比如chage -E 2026-12-31 -M 60 -W 7 username - 对 root 用户慎用
-M或-E,务必确认chage -l root显示Password expires: never
批量设置与默认策略统一
新用户默认策略由 /etc/login.defs 控制,现有用户需逐个或脚本处理:
- 修改默认值:
PASS_MAX_DAYS 90、PASS_WARN_AGE 7、PASS_MIN_DAYS 1 - 批量应用策略:
for u in alice bob carol; do chage -M 90 -W 7 "$u"; done - 检查临期用户:用
chage -l $u | grep "Password expires" | grep -E "(2026-09-|2026-10-)"筛选未来 30 天内过期的账户











