Linux

將 Linux 使用者密碼獲取到 C 程序中

  • August 28, 2020

我正在嘗試為 Linux 實現一個 PAM,該 PAM 被呼叫以進行 sudo 操作,其目的是在使用者在 cmd 中執行 sudo 操作時輸入密碼後立即向他的手機發送簡訊,我猜這個密碼是問的通過common-auth PAM(Linux中的預設PAM),使用者輸入的這個普通密碼由這個common-auth PAM通過轉換為雜湊然後與影子文件中的雜湊進行比較來驗證。現在,在此 common-auth PAM 身份驗證之後,我的自定義 PAM 被呼叫,但我沒有保留或訪問使用者輸入的純密碼(這很重要,因為我需要使用使用者的純使用者名和密碼進行 API 呼叫在我的自定義 PAM 中),如何訪問使用者在 sudo 之後輸入的純密碼?我們可以將普通密碼從 common-auth PAM 傳遞到我的自定義 PAM 嗎?

我正在嘗試實現一個自定義 PAM,它在使用者嘗試 SUDO 時充當多因素身份驗證。因此,我需要將這些使用者憑據發送到 API,該 API 將 SMS (OTP) 發送到我的手機。我有一個發送 API 請求的 C 程序,我需要將密碼傳遞給該程序。

我從“pwd.h”文件中訪問了使用者名。但是,無法訪問密碼。

在 PAM 模組中,獲取使用者身份驗證令牌的方式是pam_get_authtok.

但是,傳遞密碼通常不是一個好主意。你的簡訊發送服務真的需要知道使用者的密碼嗎?(我不是在尋找答案,只是暗示值得質疑。)

引用自:https://unix.stackexchange.com/questions/606416