用passwd改变用户密码是不可能的。 错误“passwd:抱歉”

我有一个FreeBSD服务器和一个奇怪的问题。 每次有人试图改变密码他得到这个

~$ passwd Changing local password for <USER> Old Password: passwd: sorry 

root帐户不受影响。

我在日志中找不到任何线索。 我不使用LDAP进行身份validation,服务器正在监狱中运行。

源代码非常简短,只需花费一些时间就可以在FreeBSD的passwd工具中find打印特定消息的唯一位置。

具体来说,当PAM无法validation用户时,就会发生这种情况。 换句话说,这些事情之一:

  1. 您错误input了旧密码。
  2. passwd没有适当的权限; 它必须是setuid根。
  3. 你的本地PAM设置非常糟糕, 如果是这样的话,没有人能够login。

我的赌注是2。

这可能是NIS的一个问题。 检查nsswitch.conf并禁用NIS或YP(黄页)。 然后看看问题是否已经消失。