如何使用 getpwnam() 获取 /etc/shadow 中的哈希密码?

如何使用 getpwnam() 获取 /etc/shadow 中的哈希密码?

显然有一个函数(获取pwnam),给定用户名,将返回相应的条目以及/etc/passwd该用户的其他详细信息(shell、uid、gid 等)。

但是,我不知道如何让该函数与影子密码文件(/etc/shadow)一起使用。这可能吗?该应用程序将作为 运行root

答案1

影子密码文件的要点在于getpwnam 从中返回密码。你需要看看man 3 shadowgetspnam尤其。

答案2

这是不可能的,原因有两个:

  • 影子文件是现代系统中的一种身份验证方法。其中一些根本不涉及真实密码 - 如果用户通过指纹进行身份验证,应该返回什么?为什么它会破坏任何应用程序?
  • 为非根应用程序提供散列字符串将启用离线攻击。

无论如何,它是特定于系统的文件,没有那么复杂的结构,因此如果您需要它,您可以编写自己的解析器。

相关内容