Кто-нибудь настраивал такую конфигурацию? У меня не работает.
Я установил nginx-extras на Ubuntu 12.04 (он построен с модулем 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?
В модуль nginx PAM также управляет PAM account
операции, поэтому вам также необходимо настроить это. Вы можете использовать pam_permit
модуль, чтобы всегда иметь успех:
auth required pam_script.so dir=/path/to/my/auth_scripts
account required pam_permit.so
Попробуйте следить за журналом авторизации (tail -f /var/log/auth.log
) во время аутентификации он покажет вам все запросы pam и, возможно, также ошибку / предупреждение / исключение, которые прояснят вам все.