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

passwd: Authentication token manipulation error
passwd: password unchanged
这种情况常见于以下几种场景:
- 系统管理员尝试修改 root 密码
- 普通用户尝试修改自己的密码
- 通过脚本批量修改用户密码
错误原因分析
导致这个错误的主要原因通常有以下几种:
- PAM(Pluggable Authentication Modules)配置问题:
- PAM 模块配置不当,导致密码修改请求无法正确处理
-
相关 PAM 模块 (如 pam_unix.so) 加载失败
-
文件系统权限问题:
/etc/shadow文件权限不正确(应为 640,root:shadow)/etc/passwd文件权限不正确(应为 644)-
/etc/security/目录下的相关文件权限异常 -
文件系统只读或空间不足:
- 根文件系统被挂载为只读
-
磁盘空间已满,无法写入密码变更
-
SELinux 安全上下文问题:
- 相关安全文件的安全上下文被修改
多种解决方案
方案一:检查并修复文件权限
- 首先检查关键文件的权限:
ls -l /etc/shadow /etc/passwd
- 如果权限不正确,使用以下命令修复:
chmod 640 /etc/shadow
chmod 644 /etc/passwd
chown root:shadow /etc/shadow
方案二:验证 PAM 配置
- 检查 PAM 配置文件:
cat /etc/pam.d/passwd
- 确保配置中包含以下内容:
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
- 如果配置有问题,可以备份后恢复默认配置:
cp /etc/pam.d/passwd /etc/pam.d/passwd.bak
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
authconfig --updateall
方案三:检查文件系统状态
- 检查文件系统挂载状态:
mount | grep "/"
- 如果发现只读挂载,可以尝试重新挂载为读写:
mount -o remount,rw /
- 检查磁盘空间:
df -h
方案四:SELinux 相关检查
- 检查 SELinux 状态:
getenforce
- 如果是 Enforcing 状态,可以尝试临时设置为 Permissive:
setenforce 0
- 如果问题解决,可以检查安全上下文:
ls -Z /etc/shadow
restorecon -v /etc/shadow
生产环境中的避坑指南
- 权限管理:
- 定期检查关键系统文件的权限
-
建立文件权限变更的审计机制
-
日志排查:
- 查看系统日志获取更多错误信息:
tail -f /var/log/secure
tail -f /var/log/messages
- 备份机制:
- 修改关键配置文件前做好备份
-
使用版本控制系统管理配置文件变更
-
测试环境验证:
- 在生产环境实施变更前,先在测试环境验证
总结与进一步学习建议
token manipulation error虽然看起来是一个简单的错误,但可能涉及系统多个层面的问题。通过本文介绍的多种解决方案,你应该能够有效解决这个问题。
为了进一步学习,建议:
- 深入理解 Linux PAM 机制
- 学习 SELinux 的工作原理和配置方法
- 掌握 Linux 文件权限和 ACL 的高级用法
- 定期进行系统健康检查和安全审计
记住,在解决系统问题时,保持冷静,一步步排查,通常都能找到问题的根源。
正文完
发表至: 未分类
近两天内
