直接用chage -d 0命令即可强制新用户首次登录修改密码:先用useradd -m和passwd创建用户并设初始密码,确保状态为P;再执行sudo chage -d 0 username标记密码已过期,登录即触发改密流程。

直接用 chage -d 0 命令就能实现。它不是加个开关,而是让系统判定密码“已过期”,用户一登录认证成功,就立刻进入改密流程。
确保用户有可用的初始密码
这是前提,缺一不可:密码必须存在、未锁定、且能通过验证。
- 运行
sudo useradd -m username创建用户并生成家目录 - 执行
sudo passwd username设置一个临时密码(如P@ssw0rd2026) - 检查状态:
sudo passwd -S username输出中应显示 P(密码可用),不能是 NP(无密码)或 L(锁定)
标记密码为“立即需更新”
核心操作只有一条命令,它把“上次修改日期”设为 0(即 Unix 时间起点 1970-01-01),系统因此认定密码早已过期。
- 执行
sudo chage -d 0 username - 验证效果:
sudo chage -l username中,“Password must be changed” 应显示 yes;“Password expires” 显示 never 是正常现象 - 注意:不要误用
-E(账户整体过期)或-M(最大有效期),它们不触发首次登录改密
确认 PAM 模块支持
主流发行版默认已启用必要模块,一般无需改动配置文件,但可快速核对:
- Debian/Ubuntu 系统检查
/etc/pam.d/common-password - RHEL/CentOS 系统检查
/etc/pam.d/system-auth - 确认存在类似行:
password [success=1 default=ignore] pam_unix.so - 只要没显式禁用该模块,用户输入正确旧密码后就会自动进入改密环节
测试与常见问题排查
登录测试是最可靠的验证方式。多数异常都和权限或资源有关。
- 用
ssh username@localhost或切换终端登录,输入初始密码后应立刻看到提示:You are required to change your password immediately (root enforced) - 若卡住或报错
Authentication token manipulation error,优先检查:
– 家目录归属是否正确:sudo chown -R username:username /home/username
– 磁盘空间是否充足
– SELinux 是否拦截(可临时执行setenforce 0排查)











