pam_exec.so PAM模块不会按照文档中的说明导出variablesPAM_USER

我正在尝试使用pam_exec.so PAM模块来执行一个需要知道来自应用程序(在这种情况下为OpenVPN)的用户名/密码的脚本。

我有一个脚本执行printenv >>afile ,但我看不到所有的手册页指出,pam_exec.so出口(即PAM_USER我认为)的环境variables,我只看到以下内容:

 PAM_SERVICE=openvpn PAM_TYPE=auth PWD=/usr/local/openvpn/bin SHLVL=1 A__z="*SHLVL 

我成功地从STDIN中取出密码,并用相同的脚本输出。 但是对于我的生活,我不能得到用户名。

有什么想法,我应该尝试下一步?

你使用什么分布? RHEL和CentOS使用pam 0.99。 这个问题目前有一个问题( https://bugzilla.redhat.com/show_bug.cgi?id=554518 ),但我相信他们只是使用古老版本的PAM。

如果您使用插件“openvpn-plugin-auth-pam.so”设置键值对,如下所示:

插件/usr/lib/openvpn/openvpn-plugin-auth-pam.so“openvpn mykey myval login COMMONNAME”

那么它不会设置PAM_USER(因为它用user = NULL调用pam_start),也许这是你的问题?