共计 1998 个字符,预计需要花费 5 分钟才能阅读完成。
错误背景与常见场景
在 CentOS 系统管理中,使用 passwd 命令修改用户密码时,偶尔会遇到 token manipulation error 的错误提示。这个错误通常表现为:

passwd: Authentication token manipulation error
passwd: password unchanged
该错误会导致密码修改失败,常见于以下场景:
- 普通用户尝试修改自己的密码
- root 用户尝试修改其他用户密码
- 通过自动化脚本批量修改密码时
- 系统刚完成升级或重要配置变更后
错误原因深度分析
经过对大量案例的排查,我们发现该错误主要与以下几个方面的系统配置有关:
1. PAM 模块配置问题
Linux 的 Pluggable Authentication Modules (PAM)系统负责认证相关操作。/etc/pam.d/passwd文件中的配置错误可能导致此问题。常见问题包括:
- pam_unix.so 模块配置异常
- 必需的 PAM 模块缺失
- 模块加载顺序错误
2. 文件系统权限问题
密码修改操作需要访问以下关键文件,它们的权限必须正确:
/etc/shadow:存储加密后的密码/etc/passwd:用户基本信息/etc/security/opasswd:旧密码记录
3. SELinux 安全上下文问题
在启用 SELinux 的系统上,关键文件的安全上下文 (security context) 不正确也会导致此错误。
4. 磁盘空间不足
当 /etc 分区空间耗尽时,系统无法更新密码文件,同样会报此错误。
多种解决方案详解
解决方案 1:检查并修复 PAM 配置
- 首先备份现有 PAM 配置:
cp /etc/pam.d/passwd /etc/pam.d/passwd.bak
- 检查
/etc/pam.d/passwd文件内容,确保包含以下基本配置:
#%PAM-1.0
auth include system-auth
account include system-auth
password substack system-auth
-password optional pam_gnome_keyring.so
- 如果文件损坏,可以从默认配置恢复:
authconfig --restoredefaults
解决方案 2:验证并修复文件权限
- 检查关键文件的权限:
ls -l /etc/shadow /etc/passwd /etc/security/opasswd
- 正确权限应该是:
-rw-r--r--. 1 root root /etc/passwd
----------. 1 root root /etc/shadow
-rw-------. 1 root root /etc/security/opasswd
- 如有必要,使用以下命令修复权限:
chmod 600 /etc/shadow
chmod 644 /etc/passwd
chmod 600 /etc/security/opasswd
chown root:root /etc/shadow /etc/passwd /etc/security/opasswd
解决方案 3:处理 SELinux 上下文
- 检查 SELinux 状态:
getenforce
- 如果是 Enforcing 模式,尝试恢复默认安全上下文:
restorecon -v /etc/shadow /etc/passwd /etc/security/opasswd
- 如问题依旧,可临时将 SELinux 设为 Permissive 模式测试:
setenforce 0
解决方案 4:使用替代命令修改密码
如果上述方法无效,可以尝试使用 chpasswd 命令:
echo "username:newpassword" | chpasswd
或者使用 usermod 命令:
usermod --password $(openssl passwd -1 "newpassword") username
生产环境避坑指南
-
权限管理最佳实践
-
定期审计系统关键文件权限
- 使用配置管理工具 (如 Ansible) 固化权限设置
-
避免直接编辑系统文件,使用专用命令如
vipw、vigr -
日志排查技巧
-
查看
/var/log/secure获取认证相关日志 - 使用
ausearch命令查询 SELinux 拒绝记录 -
启用 PAM 调试模式:在 PAM 配置中添加
debug选项 -
预防措施
-
修改密码前检查磁盘空间:
df -h /etc - 批量修改密码前先在测试环境验证
- 维护系统配置变更记录,便于问题回溯
总结与进一步学习建议
token manipulation error虽然看起来令人困惑,但通过系统性的排查方法可以快速定位和解决。关键是要理解 Linux 认证机制的工作原理,特别是 PAM 系统和文件权限的交互方式。
对于希望深入学习的系统管理员,建议:
- 研读
pam.conf(5)和shadow(5)man 手册页 - 理解 SELinux 的基本原理和排错方法
- 学习使用
strace跟踪系统调用,分析命令执行过程 - 参与 Linux 系统安全相关的专业培训
通过掌握这些底层知识,不仅能解决密码修改问题,还能提高整体系统管理能力。
