Как получить аутентификацию PAM, работая с Apache и mod_authnz_external?

Я пытаюсь в течение 2 дней написать собственный скрипт PAM, который проходит аутентификацию под Linux с помощью sys user и pass.

Я сделал примеры на C, Python и Perl, но у меня с ними одна и та же проблема.

Когда я тестирую скрипт в моей оболочке, все работает хорошо.

Я проверяю их с

# ./script;echo $?

И получить 0 или 1 обратно.

Но как только я пытаюсь использовать его с mod_authz_external и Apache, он перестает работать.

Даже с действительным пользователем я получаю 1 назад и не могу войти.

Кажется, что есть проблема с PAM и, возможно, средой Apache.

Я где-то читал, что мне нужно установить переменные окружения для использования PAM, но я понятия не имею, как.

Вот примеры на C, Perl и Python:

C: http://pastebin.com/v9Yn9xvK

Perl: http://pastebin.com/cqzqztYg

Python: http://pastebin.com/32cvvCjS

Выберите то, что вам нравится, они работают одинаково … возвращая код выхода 0 или 1.

Любая помощь или намек будут оценены.

Спасибо!

0

Решение

Если вы аутентифицируете системного пользователя с помощью PAM, то он пройдет через libpam_unix.so. Из справочной страницы pam_unix:

Предоставляется вспомогательный двоичный файл unix_chkpwd (8) для проверки пароля пользователя, когда он хранится в базе данных, защищенной от чтения. Этот двоичный файл очень прост и проверяет только пароль пользователя, который его вызывает.

Поэтому, если вы хотите аутентифицировать пользователей с веб-сервера, вы, скорее всего, работаете как пользователь ‘apache’ или что-то в этом роде. Все, что pam_unix может сделать для вас, — это аутентифицировать пользователя «apache», что, скорее всего, не то, что вам нужно. pwauth должен как-то обойти это ограничение.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]