有人设置过这样的配置吗?对我来说不起作用。
我已经在 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 请求,也许还会显示错误/警告/异常,让您清楚地了解一切。