chage -w 设置密码过期前警告天数需配合 -m 才生效,如 chage -m 90 -w 7 username 表示密码到期前7天起每次密码登录提示;警告仅对交互式密码登录有效,ssh密钥、su等不触发。

用 chage -W 设置密码过期前的警告天数,这是最直接有效的方式。警告只对密码登录生效,且必须配合 -M(最大有效期) 才会触发。
警告天数怎么设才起作用
警告不是独立生效的,它依赖密码本身有明确的到期日:
- 先确保已用
chage -M 90 username设定了密码最大使用天数,否则-W不会显示提示 -
chage -W 7 username表示:密码到期前 7 天起,每次用密码登录时,终端会显示“Your password will expire in X days” - 警告天数必须小于
-M值,比如-M 30就不能设-W 45,否则 chage 会静默忽略或报错
验证和常见问题
设完立刻检查是否生效:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 运行
chage -l username,确认输出中 Number of days of warning before password expires 显示你设的数字(如 7) - 如果显示 never 或空值,说明
-M没设成功,或用户是老账户、没继承全局策略 - SSH 密钥登录、su 切换、脚本任务不触发警告——这些绕过了密码校验环节
批量设置警告天数
对已有普通用户统一加提醒:
- 命令示例:
getent passwd | awk -F: '$3 >= 1000 {print $1}' | xargs -I{} sudo chage -W 7 {} - 该命令筛选 UID ≥1000 的常规用户,并为每人设置提前 7 天警告
- 建议搭配
-M 90一起执行,例如:sudo chage -M 90 -W 7 username
注意别踩的坑
几个容易出错的操作细节:
-
-W 0不等于“不提醒”,而是“到期当天才提醒”,实际几乎没用 - 警告只在交互式登录时出现,图形界面(如 GNOME)不一定弹窗,用户可能错过
- root 用户不建议设警告,否则系统维护通道可能因误操作中断;
chage -W 0 root是安全底线










