Nginx通过PAMauthentication通过pam_script

有没有人设置这样的configuration? 这不适合我

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

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 

不起作用。 脚本启动(我写了全function的脚本,成功执行,检查凭据,写入自己的日志,并返回正确的退出代码,并执行明显长)。 但是没有访问权限,只有被拒绝。

/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授权正常工作。 但脚本身份validation不起作用。

我不明白,麻烦在哪里。 它在nginx模块还是在pam_script模块中?

nginx PAM模块也运行PAM account操作,所以您也需要configuration它。 您可以使用pam_permit模块始终成功:

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

尝试跟随auth日志( tail -f /var/log/auth.log )进行身份validation时,它会显示所有的pam请求,也许还会显示错误/警告/exception。