使用 pam_exec.so 进行 openvpn 身份验证

使用 pam_exec.so 进行 openvpn 身份验证

我已经为 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。

相关内容