我正在编写一个 PAM 模块,它将用户名/密码写入文件中,以供其他应用程序进行进一步事务。我只看到了 PAM_AUTHTOK 项目,但我不确定它来自哪个类型。有人知道这个或其他方式来获取明文密码吗?
问问题
6512 次
3 回答
9
这是一个非常古老的线程,但也有 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-example 的内容,呼应所有变量:
#!/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 $?
于 2016-10-01T01:48:41.923 回答
3
您是否阅读过 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.
于 2011-10-11T13:39:27.620 回答
0
调试时只打印 PAM_AUTHTOK 的内容怎么样?无论如何,要有意义地使用它,您必须在模块之间建立某种契约或约定。
顺便说一句:将明文密码保存在内存中并尽快从那里删除(或者更好的是:将该区域锁定在 RAM 中,或进行加密交换)和将该明文密码写入磁盘之间是有区别的。后者太不安全了,不要那样做。
于 2011-12-30T17:00:13.650 回答