linux密码过期提醒需三步组合:1.用chage -w为各用户设警告天数;2.通过pam+脚本实现登录时高亮提示;3.用定时脚本遍历用户并邮件告警,确保线上线下全覆盖。

Linux 系统中配置密码过期前提醒通知,核心是分三步走:设好策略、让登录时看得见、再加自动邮件告警。单靠一个环节容易漏掉用户,必须组合使用才可靠。
设置每个用户的密码警告天数(-W 参数)
这是所有提醒的基础。系统不会自动对已有用户启用警告,必须显式设置:
- 运行 sudo chage -W 7 username,表示该用户密码到期前 7 天开始提示
- 用 sudo chage -l username 检查输出中 “Password expires” 和 “Warning before password expires” 两行是否都显示有效值
- 注意:/etc/login.defs 中的 PASS_WARN_AGE 只影响新用户,老用户必须单独执行 chage -W 才生效
确保登录时强提醒不被忽略
默认的终端提示文字容易被启动信息冲刷过去。要真正“强提醒”,需通过 PAM 在每次成功登录后插入高亮提示:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 编辑 /etc/pam.d/sshd(SSH)或 /etc/pam.d/login(本地终端),在末尾添加:
session optional pam_exec.so stdout /usr/local/bin/passwd-expiry-notice.sh - 创建脚本 /usr/local/bin/passwd-expiry-notice.sh,内容判断剩余天数并打印带 ⚠️ 的醒目提示
- 赋予执行权限:sudo chmod +x /usr/local/bin/passwd-expiry-notice.sh
配置定时脚本自动发邮件告警
登录提醒只覆盖在线用户,离线或长期不登录的人会错过。需补充后台邮件通知:
- 写一个脚本,遍历普通用户(如 UID ≥1000),用 chage -l 提取过期日期,计算剩余天数
- 若剩余 ≤7 天且 >0,调用 mail 或 sendmail 向用户邮箱发送提醒(需提前配好本地邮件服务)
- 加入 cron,例如每天 9 点执行:
0 9 * * * /usr/local/bin/check-passwd-expiry.sh > /dev/null 2>&1
这样,用户既会在每次登录时被视觉强提醒,又会在邮箱收到提前通知,覆盖了主要使用场景。










