验证 Linux 用户密码

验证 Linux 用户密码

我有一台有几十个用户的 Linux 服务器。我还有每个用户的明文密码(我知道 - 安全性很差)。

我想知道密码是否正确。由于用户都是 ftp 用户并且具有 nologin shell,因此我无法仅编写脚本来检查登录是否有效。

我如何对密码进行本地检查?脚本输出可能如下所示:

$ check_userpw < user_pw_list.txt
user1 ok
user2 ok
user3 mismatch!
user4 ok

谢谢

答案1

如果您的用户通过存储在 /etc/shadow 中的本地密码进行身份验证,您可以生成哈希值并自行进行比较。

对于 MD5 哈希值,该字段如下所示:

$1$5q9TrKNO$YeVQrfsitsGlapGwhAjIl。

(包含结束句点。这是字符串“abc”的哈希值。)

$ 是分隔符。第一个字段中的 1 表示哈希值为 MD5,5q9TrKNO 是设置密码时随机生成的盐,用于使字典攻击更加困难。

您可以使用这个 perl 模块测试您保存的密码的哈希值:使用 /etc/shadow 中的盐和您拥有的密码,然后检查结果是否与最后一部分匹配。

答案2

您可以使用 Perl 的 Net::FTP 或 GNU Expect 或任何您喜欢的程序编写一个脚本,自动在每个服务器上进行 FTP 登录,但最简单的方法可能是check_ftp在 Nagios-Plugins 中搭载该程序。如果登录失败,它将返回非零值。

相关内容