簡體   English   中英

如何使用PAM以明文形式檢索用戶密碼?

[英]How to retrieve user password in cleartext using PAM?

我正在編寫一個PAM模塊,它將用戶名/密碼寫入文件,以供其他應用程序進一步處理。 我只看到了PAM_AUTHTOK項,但我不確定它是從哪種類型開始的。 有人知道這個或其他方式來獲取明文密碼嗎?

這是一個非常老的線程,但也有pam_exec: https ://linux.die.net/man/8/pam_exec

例如PAM Config中的以下內容:

auth sufficient pam_exec.so expose_authtok /usr/local/bin/myscript-example

myscript示例的內容,回顯所有變量:

#!/bin/sh
read password
echo "User: $PAM_USER"
echo "Ruser: $PAM_RUSER"
echo "Rhost: $PAM_RHOST"
echo "Service: $PAM_SERVICE"
echo "TTY: $PAM_TTY"
echo "Password : $password"
exit $?

您是否閱讀過Linux-PAM應用程序開發人員指南? 在RHEL類型的系統上,這將在/usr/share/doc/pam-devel-<version>/Linux-PAM_ADG.txt ,或者您可以在線在各個地方找到它。

查看獲取PAM項目部分,其中記錄了pam_get_item()函數。 您可以使用PAM_AUTH_TOK常量請求密碼:

PAM_AUTHTOK

 The authentication token (often a password). This token should be ignored by all module functions besides pam_sm_authenticate(3) and pam_sm_chauthtok (3). In the former function it is used to pass the most recent authentication token from one stacked module to another. In the latter function the token is used for another purpose. It contains the currently active authentication token. 

在調試時只打印PAM_AUTHTOK的內容怎么樣? 要有意義地使用它,無論如何你必須在模塊之間有某種契約或約定。

順便說一下:在內存中保留一個明文密碼並盡快從中擦除它(或者更好:在RAM中鎖定該區域,或者使用加密交換),並將該明文密碼寫入磁盤之間存在差異。 后者只是太不安全了,不要這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM