chpasswd 默默地无法执行任何操作;有替代品吗?

chpasswd 默默地无法执行任何操作;有替代品吗?

经过一系列入侵尝试后,我为运行 Virtualmin 的 Ubuntu 12.04.2 LTS 服务器上的所有用户生成了新的随机密码,然后以 root 身份使用 chpasswd 更改了他们的密码。我输错了几个用户名,chpasswd 检测到了这一点并正确地报告了错误名称的行,我对其进行了更正。

然后我开始收到用户的反馈,说他们的密码没有更改......

嗯,看起来 chpasswd 似乎根本没有做任何事情 - 但是它也没有报告任何类型的错误,无论是在命令行上还是在我发现的任何日志中。

passwd 确实可以更改密码 - 但不幸的是,Ubuntu 上的 passwd 似乎不接受 --stdin 选项,因此我必须手动逐个更改所有密码 - 几乎有一百个帐户。(而且我可能想在某个时候再次这样做...)

chpasswd 是不是坏了?有没有什么办法可以让它工作?或者有没有什么替代品?

而且 - 我应该在某个地方报告功能缺陷吗?我不认为“默默失败”是一个好结果。也许我的系统(使用 Virtualmin 进行域管理,但其他方面相当普通)上存在某些问题,导致它无法工作 - 但如果是这样,chpasswd 应该能够检测到这一点,并至少说它未能采取行动。

但是 passwd 工作得很好,所以显然可以从命令行更改密码...不管怎样,对我来说这似乎是一个客观的功能缺陷(“错误”) - 我应该报告它吗?如果是的话,在哪里报告?

更新:更奇怪的是 - 有些用户报告他们的密码被更改了,而有些用户报告没有更改。一个拥有两个帐户的用户,一个密码被更改了,另一个没有更改。我再次浏览了文件,检查所有帐户都在那里,然后再次通过 chpasswd 运行它...结果相同!

我感到很困惑。有什么想法吗?

更新:这是我现在使用的命令行:

cat passwords.txt | chpasswd

如果我使用 -S - 我看不到任何输出 - 什么都没有!所以它似乎什么都没有得到...但如果我只是 cat 文件:

cat passwords.txt

我得到:用户:密码用户2:hunter2 [... 等...]

更多:如果我将第一行更改为 NONuser (无效用户),我会收到一个完美的错误:

chpasswd: (user NONuser) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user NONuser) password not changed

所以事实上读取和处理文件,至少可以检测非用户!

哦,还有 $? 是 0。

答案1

我在这里做了很多系统测试,我不再认为这是 chpasswd 的问题。

相反,它与 ftp 有关 - 由于某种原因,ftp 仍然使用旧密码,但 ssh 和所有其他安全协议都有新密码。

我通过关闭 FTP 解决了这个问题。:-DI 本来打算这么做的,但是我意外地停止了守护进程而不是永久关闭它(我使用 Virtualmin 前端时犯了错误)。

我的想法是 - 这是 ProFTPd 或 Virtualmin 的问题 - 但我没有时间进一步调查。我把这个留在这里,希望它对下一个人有用。

相关内容