有没有人设置过这样的配置?它对我不起作用。
我已经在 Ubuntu 12.04(它是用 PAM 模块构建的)上安装了 nginx-extras,并添加到站点配置中:
location ^~ /restricted_place/ {
auth_pam "Please specify login and password from main_site";
auth_pam_service_name "nginx";
}
Run Code Online (Sandbox Code Playgroud)
之后,在/etc/pam.d/nginx:
auth required pam_script.so dir=/path/to/my/auth_scripts
Run Code Online (Sandbox Code Playgroud)
并写得最简单/path/to/my/auth_scripts/pam_script_auth(我也尝试过编写复杂的脚本)
#!/bin/sh
exit 0 # should allow anyone
Run Code Online (Sandbox Code Playgroud)
不起作用。脚本已启动(我编写了功能齐全的脚本,该脚本成功执行、检查凭据、写入自己的日志并返回正确的退出代码,并且执行时间很长)。但是没有访问被授予,只有被拒绝。
在/var/log/nginx/error.log出现这一行:
2012/09/13 10:44:42 [alert] 1666#0: waitpid() failed (10: No child processes)
Run Code Online (Sandbox Code Playgroud)
如果我指定/etc/pam.d/nginx:
auth required pam_unix.so
Run Code Online (Sandbox Code Playgroud)
并授予www-data用户阅读/etc/shadow权限,unix 授权工作正常。但是脚本身份验证不起作用。
我不明白,哪里出了问题。是在 nginx 模块中,还是在 pam_script 模块中?