使用哈希密码登录 sudo

使用哈希密码登录 sudo

我很好奇我是否可以将散列的 sha512(?) 密码传递给 sudo 密码提示符,然后以此方式登录到 root。因此它可能看起来像这样:

[user@device ~]$ sudo su -
[sudo] password for user: 'some hashed password from shadow file' 

这可能吗?如果可以,有没有简单的方法可以获取此散列密码?

答案1

这将违背存储散列密码的目的。

我确信您知道,但以防万一,哈希算法背后的思想非常简单——您找到一个函数,该函数在一个方向上很容易计算,但在另一个方向上计算起来却非常困难。我们称该函数为hash

现在,当您第一次创建密码时,hunter2系统将运行hash('hunter2')并将结果存储在影子文件中。

然后,当您登录系统时,您声明您的密码是hunter4,系统会通过hash('hunter4')与影子文件中存储的值进行比较来检查这一点。如果哈希值相等,系统将允许您登录,如果不相等,系统将拒绝您。

这样做的好处是,即使有人设法访问您的影子文件,他们仍然不知道您的密码并且无法以您的身份登录,因为虽然他们知道哈希值,但确定产生此哈希值的密码却极其困难。

简而言之,存储的哈希值/etc/shadow不能替代用户密码。

答案2

不能直接在命令行上,因为 sudo 期望密码是纯文本。

你可以使用--askpass选项让 sudo 调用辅助程序来获取密码,但尽管它可以阻止密码出现在命令行上,但它仍然需要将明文密码传递给 sudo

您可以以 root 用户身份查看 /etc/shadow 文件来获取散列密码。

相关内容