将Linux用户密码写​​入C程序

将Linux用户密码写​​入C程序

我正在尝试为 Linux 实现一个 PAM,它会被调用以执行 sudo 操作,其目的是在用户在 cmd 中执行 sudo 操作时输入密码后询问用户发送到手机的短信,我猜想会询问此密码通过 common-auth PAM(Linux 中的默认 PAM),用户输入的明文密码由该 common-auth PAM 验证,方法是转换为哈希值,然后与影子文件中的哈希值进行比较。现在,经过此通用身份验证 PAM 身份验证后,我的自定义 PAM 被调用,但我无法保留或访问用户输入的纯密码(这很重要,因为我需要使用用户的纯用户名和密码进行 API 调用在我的自定义 PAM 中),如何访问用户在 sudo 之后输入的纯密码?我们可以启用将普通密码从通用身份验证 PAM 传递到我的自定义 PAM 吗?

我正在尝试实现一个自定义 PAM,当用户尝试 SUDO 时,它充当多因素身份验证。因此,我需要将这些用户凭据发送到 API,该 API 会将 SMS (OTP) 发送到我的手机。我有一个发送 API 请求的 C 程序,我需要将密码传递到该程序中。

我从“pwd.h”文件中访问了用户名。但是,无法访问密码。

答案1

在PAM模块中,获取用户身份验证令牌的方法是pam_get_authtok

然而,传递密码通常不是一个好主意。您的短信发送服务真的需要知道用户的密码吗? (我并不是在寻找答案,只是建议值得质疑。)

相关内容