我正在尝试使用pam_exec.so
PAM 模块执行一个脚本,该脚本需要知道来自应用程序(在本例中为 OpenVPN)的用户名/密码。
我有一个执行的脚本printenv >>afile
,但我没有看到手册页指出 pam_exec.so 导出的所有环境变量(我认为是 PAM_USER),我只看到以下内容:
PAM_SERVICE=openvpn
PAM_TYPE=auth
PWD=/usr/local/openvpn/bin
SHLVL=1
A__z="*SHLVL
我确实成功地从 STDIN 中获取了密码,并用相同的脚本将其输出。但我无论如何都无法获取用户名。
有什么想法我下一步应该尝试什么吗?
答案1
如果您使用插件“openvpn-plugin-auth-pam.so”设置键值对,如下所示:
插件 /usr/lib/openvpn/openvpn-plugin-auth-pam.so “openvpn mykey myval login COMMONNAME”
那么它没有设置 PAM_USER(因为它使用 user=NULL 调用 pam_start),也许这是你的问题?
答案2
您使用的是什么发行版?RHEL 和 CentOS 使用 pam 0.99。目前此问题有一个未解决的错误 (https://bugzilla.redhat.com/show_bug.cgi?id=554518),但我相信他们只是使用了 PAM 的古老版本。