强制新用户首次登录重置密码需设密码立即过期:用chage -d 0或passwd -e将/etc/shadow第3字段置0,确保密码非空(p状态)且未锁定,ssh密钥登录等不触发该机制。

在 Linux 系统中,强制新用户首次登录时必须重置密码,核心是让系统判定其密码“已过期”,从而触发 PAM 的改密流程。这不是靠提示语或脚本实现的,而是通过修改密码状态字段来达成的。
创建用户后立即标记密码过期
这是最直接有效的方法:用 chage -d 0 将“上次密码修改日期”设为 Unix 时间起点(1970-01-01),系统会认为该密码从创建起就已失效。
- 先创建用户并设初始密码:sudo useradd -m alice,再执行 sudo passwd alice 设置一个管理员可控的临时密码(如 Alice2026!)
- 运行 sudo chage -d 0 alice —— 此操作不改密码本身,只更新
/etc/shadow中第 3 字段为0 - 验证:执行 sudo chage -l alice,看到 Password must be changed 显示 yes 即生效
确保密码字段非空且未锁定
如果用户密码为空(NP)或被锁定(L),改密流程不会启动,系统可能直接拒绝登录。
- 检查状态:sudo passwd -S alice 应返回类似
alice P 09/25/2026 7 90 7 -1,其中 P 表示密码可用 - 若显示
L,说明账户被锁,需先解锁:sudo passwd -u alice - 若显示
NP,说明无密码,必须先用 sudo passwd alice 设置一个有效密码
登录方式不影响该机制触发
只要认证走标准 PAM 流程(包括 SSH 密码登录、本地 console、GNOME 图形登录等),该设置就生效。但以下情况例外:
- SSH 使用密钥登录且禁用了密码认证(
PasswordAuthentication no)→ 不会触发改密 - 用户已处于活跃会话中(如后台 SSH 连接未断开)→ chage -d 0 不影响当前会话,仅对下次新登录生效
- 家目录权限错误(如
/home/alice所属不是 alice)→ 登录后卡在改密界面,报错 Authentication token manipulation error
替代命令:passwd -e 效果相同但语义更直白
sudo passwd -e alice 是 chage -d 0 的等效快捷方式,作用完全一致,都是将密码设为“立即过期”。两者任选其一即可,无需同时使用。
- 它底层同样是把
/etc/shadow第 3 字段写为0 - 比
chage更简洁,适合脚本批量初始化用户:for u in user1 user2; do sudo passwd -e "$u"; done











