我已经为 OpenVPN 设置了 PAM 身份验证配置。
auth required pam_exec.so debug expose_authtok /opt/openvpn/bin/pamauth
脚本成功后pamauth
返回0
。我通过将脚本中的值回显到文件来验证这一点pamauth
。
<user authentication process>
echo $EXIT_CODE >/tmp/result #yields a '0' in /tmp/result
exit $EXIT_CODE
但身份验证失败,并且auth.log
显示以下内容,但我可以清楚地看到/tmp/result
我的pamauth
脚本运行并调用exit 0
Jul 5 09:53:29 client openvpn: pam_exec(openvpn:auth): send password to child
Jul 5 09:53:29 client openvpn: pam_exec(openvpn:auth): Calling /opt/openvpn/bin/pamauth ...
Jul 5 09:53:29 client openvpn: pam_unix(openvpn:account): could not identify user (from getpwnam(test40))
答案1
错误信息甚至没有提到 pam_exec
。
Jul 5 09:53:29 client openvpn: pam_unix(openvpn:account): could not identify user (from getpwnam(test40))
问题出在帐户管理(account
)阶段。(如果的配置pam.d/openvpn
没有任何account
模块,PAM 将使用在中配置的模块pam.d/other
。)
这里的“无法识别用户”是指pam_unix
模块test40
在系统中找不到用户帐户。如果您最近编辑了nsswitch.conf
,则可能必须重新启动 OpenVPN。