Назад | Перейти на главную страницу

Nginx с аутентификацией PAM через pam_script

Кто-нибудь настраивал такую ​​конфигурацию? У меня не работает.

Я установил 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 и, возможно, также ошибку / предупреждение / исключение, которые прояснят вам все.