繁体   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