普通用户改密码报“Authentication token manipulation error”通常因/etc/shadow权限错误、磁盘满或根分区只读;root批量改密应优先用chpasswd而非passwd非交互模式。

普通用户执行 passwd 命令改自己密码时提示 “Authentication token manipulation error”
这通常不是权限问题,而是 /etc/shadow 文件权限或磁盘空间/只读挂载导致的。先检查:
— 运行 ls -l /etc/shadow,确认权限是 -rw------- 且属主为 root:shadow;
— 执行 df -h / 看根分区是否满(满则 passwd 写入失败);
— 运行 mount | grep " / "`,确认不是以 <code>ro(只读)方式挂载。
root 用户想批量修改多个用户的密码,但不想交互输入
passwd 本身不支持非交互式设密(除非用 echo "newpass" | passwd --stdin username,但该选项仅在 RHEL/CentOS 等部分发行版的 passwd 中存在,Ubuntu/Debian 默认不支持)。更通用安全的做法是用 chpasswd:
— 准备一行格式: username:newpassword(注意无空格);
— 通过管道传入:echo "alice:Secr3t!2024" | chpasswd;
— 若批量修改,可写入临时文件再执行:chpasswd ;<br>— 注意:<code>chpasswd 默认启用密码强度检查(由 pam_pwquality 控制),弱密码会失败,可临时加 -c SHA512 指定加密方式,但不跳过强度校验。
忘记 root 密码,单用户模式下重置后仍无法登录
常见原因是 SELinux 上下文损坏或 /etc/shadow 的 SELinux 标签丢失。重置后务必运行:
— touch /.autorelabel(RHEL/CentOS/Fedora),重启后自动重打 SELinux 标签;
— 或手动恢复标签:restorecon -v /etc/shadow;
— 另外确认重置时没误删 root 行末尾的 !! 或 * —— 这些表示密码锁定或无效,应确保是标准哈希串(如以 $6$ 开头);
— 如果系统启用了 authselect(新版 RHEL),还需检查 authselect current 输出是否正常,异常时运行 authselect select sssd(或对应 profile)修复 PAM 配置。
使用 passwd 修改密码时被强制要求“至少8位、大小写+数字+符号”,如何临时绕过?
不能也不该“绕过”,但可以明确控制策略来源:
— 查看 /etc/security/pwquality.conf(或 /etc/pwquality.conf),其中 minlen、minclass 等决定最小长度与字符类要求;
— 若只是临时给测试账户设简单密码,可用 usermod -p 直接写入已加密的密码哈希(需先用 openssl passwd -6 生成):usermod -p '$6$salt$hash...' testuser;
— 注意:-p 参数接受的是已加密字符串,不是明文,且不同系统默认哈希算法可能不同(-5 是 SHA256,-6 是 SHA512);
— 更稳妥的做法是临时注释掉 pam_pwquality.so 行(在 /etc/pam.d/common-password 或 system-auth 中),改完立即还原。
sudo 缓存也不会清空;而某些服务(如 Apache HTTP Basic Auth)若缓存了密码哈希,可能需要重启服务才能生效。

















