我有一个正在从 CentOS 5 升级到 CentOS 6 的机器。在原始服务器上,所有用户都有 MD5 密码。升级后的服务器现在使用 SHA-512 密码。
升级后更改过密码且密码为 SHA-512 的用户/etc/shadow
能够crontab
成功使用,但未更改密码且仍使用旧 MD5 密码的用户无法使用crontab
。他们收到的错误消息是:
Authentication service cannot retrieve authentication info
You (_username_) are not allowed to access to (crontab) because of pam configuration.
我看过/etc/pam.d/system-auth
(你也可以),但我并不完全清楚需要进行哪些调整才能允许尚未更改密码的用户访问 crontab。
我很清楚我可以强制每个人使用 更改他们的密码chage -d 0
,并且更改密码的用户将重新获得对 crontab 的访问权限(以及其他可能损坏的内容),但我有几个用户需要在他们下次登录之前编辑他们的 crontab,并且crontab -e -u _username_
以 root 身份使用也会失败,出现与上述完全相同的错误。
奇怪的是,这个问题并没有出现在我的开发机上;我在部署之前在临时机上遇到过这个问题。开发机上使用旧 MD5 密码的用户可以轻松访问 crontab,并且是/etc/pam.d/system-auth
相同的。除了 IP 地址之外,开发机和临时机应该是相同的。我怀疑我错过了一些非常明显和愚蠢的事情......
所以我的问题是,如何为尚未更改密码且未进行 SHA-512 哈希处理的用户启用对 crontab 的访问?或者,我该如何解决这个问题?
答案1
发布问题后我很快就解决了这个问题。
事实证明,/etc/shadow
受影响的 MD5 密码用户的条目不知何故哈希密码后的字段重复了,导致 PAM 无法解释该行。换句话说,这是一次糟糕的剪切和粘贴工作。
我还没喝够咖啡……
答案2
我也遇到过这个问题,结果发现 /etc/shadow 没有该用户的条目。使用 pwck 添加了该用户,问题就解决了。
答案3
遇到了同样的问题。如果您不需要为帐户设置确切的密码,只需运行:
pwconv