我正在尝试使用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),也许这是你的问题?