Linux系统默认密码过期提前提醒天数由/etc/login.defs中PASS_WARN_AGE参数控制,修改该值可设置新用户提醒天数,已有用户需用chage -W单独配置。

设置Linux系统默认密码过期提前提醒天数,核心是修改全局策略文件 /etc/login.defs 中的 PASS_WARN_AGE 参数。该值决定所有新创建用户在密码到期前多少天开始收到终端登录警告(如 “Warning: your password will expire in X days”),属于基础且关键的安全配置项。
修改全局默认提醒天数(影响新建用户)
编辑 /etc/login.defs 文件:
- 用 root 权限打开:`sudo nano /etc/login.defs`
- 查找
PASS_WARN_AGE行(若不存在可手动添加) - 将其设为合理值,例如提前 7 天提醒:
PASS_WARN_AGE 7 - 保存退出。此后新建的用户将自动继承该提醒策略
为已有用户单独设置提醒天数
/etc/login.defs 对已有用户不生效,需用 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 天:`sudo chage -W 7 username`
- 批量应用(例如对所有普通用户):
awk -F: '($3 >= 1000) && ($3
提醒机制生效的前提条件
仅设置 PASS_WARN_AGE 或 -W 不足以确保用户看到提示,还需满足:
- 用户使用交互式 shell 登录(如 bash、zsh),非脚本或 SSH 密钥免密登录场景
- 密码本身设置了有效期(即
PASS_MAX_DAYS或chage -M已启用),否则无“到期”可提醒 - 用户未禁用 shell 提示(如通过
export HISTCONTROL=ignorespace等干扰不影响该警告)
验证与确认效果
完成配置后建议立即验证:
- 新建测试用户:`sudo useradd -m testuser && echo "testpass" | sudo passwd --stdin testuser`(RHEL)或 `sudo passwd testuser`(Debian)
- 强制其密码 10 天后过期:`sudo chage -M 10 testuser`
- 再设提醒为 3 天:`sudo chage -W 3 testuser`
- 切换登录:`su - testuser`,观察是否在剩余 3 天时出现明确警告

















