Nginx 通过 pam_script 进行 PAM 身份验证

Nginx 通过 pam_script 进行 PAM 身份验证

有人设置过这样的配置吗?对我来说不起作用。

我已经在 Ubuntu 12.04 上安装了 nginx-extras(它是用 PAM 模块构建的),并将其添加到站点配置中:

location ^~ /restricted_place/ {
    auth_pam              "Please specify login and password from main_site";
    auth_pam_service_name "nginx";
}

之后,在/etc/pam.d/nginx

auth    required    pam_script.so dir=/path/to/my/auth_scripts

并写了最简单的/path/to/my/auth_scripts/pam_script_auth(我也尝试写复杂的脚本)

#!/bin/sh
exit 0 # should allow anyone

不起作用。脚本已启动(我编写了完整的功能脚本,该脚本成功执行、检查凭据、写入自己的日志并返回正确的退出代码,并且执行时间明显很长)。但没有授予访问权限,只被拒绝。

出现/var/log/nginx/error.log这一行:

2012/09/13 10:44:42 [alert] 1666#0: waitpid() failed (10: No child processes)

如果我指定/etc/pam.d/nginx

auth    required    pam_unix.so

并授予www-data用户读取权限/etc/shadow,unix 授权工作正常。但脚本授权不起作用。

我不明白问题出在哪里。是在 nginx 模块中,还是在 pam_script 模块中?

答案1

nginx PAM 模块还运行 PAMaccount操作,因此您还需要对此进行配置。您可以使用该pam_permit模块始终成功:

auth    required    pam_script.so dir=/path/to/my/auth_scripts
account required    pam_permit.so

答案2

在进行身份验证时尝试关注身份验证日志 ( tail -f /var/log/auth.log),它将向您显示所有 pam 请求,也许还会显示错误/警告/异常,让您清楚地了解一切。

相关内容