我目前正在运行内核版本为 3.13.0-65-generic 的 trusty(Ubuntu 14.04.3 LTS)。
作为 root 我无法更改用户密码:
root@server:~# passwd newuser
passwd: Authentication token manipulation error
passwd: password unchanged
我也无法更改 root 帐户本身的密码:
root@server:~# passwd
passwd: Authentication token manipulation error
passwd: password unchanged
我已经搜索了一段时间。这不是 / 需要以 r/w 方式挂载的问题。/etc/passwd 和 /etc/shadow 上的权限没问题。我能够手动更改 /etc/shadow 文件中的密码,而且这样做有效。但我需要了解原因密码出现错误。
我想我需要深入研究 /etc/pam.d/* 但我不知道从哪里开始。
任何想法都将不胜感激。谢谢!
更新信息:
- 命令行中没有传递多余的字符。
- 这是目前所有现有用户和新用户都存在的问题,我尝试使用 adduser 添加新用户,当 adduser 脚本应该要求我输入密码时,却出现了同样的错误。
答案1
好的,我想我已经搞明白了。深入研究 /etc/pam.d/*,我为大多数 common-* 文件启用了调试和审计选项。这并没有多大帮助,只是让我找到了 pam_unix 模块:
passwd[45463]: pam_unix(passwd:chauthtok): username [root] obtained
passwd[45463]: pam_unix(passwd:chauthtok): username [root] obtained
passwd[45463]: pam_unix(passwd:chauthtok): password - new password not obtained
我开始仔细研究 common-password 中提供给 pam_unix.so 的每个选项。我拥有的选项是:obscure use_authtok try_first_pass sha512
阅读手册页pam_unix我看到了use_authtok与更改密码有关。它谈到了在 pam_cracklib 之后使用它。在我的例子中,没有 pam_cracklib,所以我决定尝试删除该选项。这完全恢复了 passwd 命令的功能。
我不确定脚本是否添加了该选项或者它是默认选项。
感谢所有尝试提供想法的人。
答案2
问题似乎与 encryptfs(加密文件系统 pam 模块)有关。当用户更改密码时,必须以某种方式修改磁盘加密密码。当此修改尝试失败时,所有密码更改过程都会失败并回滚。请参阅:https://bugs.launchpad.net/ecryptfs/+bug/1486470