3

Я пытаюсь настроить сервер svn для использования системной учетной записи linux для аутентификации вместо независимого файла htpasswd. Я использую Fedora 16 и следовал этому руководству , чтобы установить и настроить mod_authnz_external и pwauth, затем я установил /etc/httpd/conf.d/subversion.conf следующим образом:

LoadModule dav_svn_module          modules/mod_dav_svn.so
LoadModule authz_svn_module        modules/mod_authz_svn.so
LoadModule authnz_external_module  modules/mod_authnz_external.so

AddExternalAuth pwauth /usr/local/libexec/pwauth
SetExternalAuthMethod pwauth pipe 

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Subversion repositories PAM"
   AuthBasicProvider external
   AuthExternal pwauth
   Require valid-user
</Location>

Но я не могу получить доступ к хранилищу, все пароли отклонены. Файл журнала Apache показывает следующую ошибку:

exec of '/usr/local/libexec/pwauth' failed: (13) Permission denied
[Tue Jan 29 11:23:18 2013] [error] [client ::1] AuthExtern pwauth [/usr/local/libexec /pwauth]: Failed (255) for user tom
[Tue Jan 29 11:23:18 2013] [error] [client ::1] user tom: authentication failure for "/svn/project/trunk": Password Mismatch

Что я делаю неправильно? Заранее спасибо.

PS Я пробовал pwauth для пользователя apache (sudo -u apache /usr /local /libexec /pwauth), и он отлично работает….

3 ответа3

1

У меня был такой же опыт, когда я пытался запустить pwauth на Scientific Linux 6.3 (другой дистрибутив на основе RH). SL поставляется с SELinux, включенным по умолчанию. Я сделал

Setenforce разрешительный

и все начало работать. /var /log /messages все еще содержит много сообщений. Например.

7 февраля 14:59:26 VC-L001614-01 ядро: тип = 1400 аудит (1360270766.350: 44): avc: отказано {выполнить} для pid = 32154 comm = "sh" name = "pwauth" dev = dm-0 ino = 290254 scontext = не определено_u: system_r: httpd_t: s0 tcontext = не определено_u: object_r: usr_t: s0 tclass = файл

Я собираюсь попытаться избавиться от регистрации, отключив SELinux в /etc /selinux /conf и сохранив исправление проблем контекста безопасности SELinux на другой день.

1

Остановка применения политик selinux редко является решением. Лучше всего найти логическое значение, которое позволит серверу apache выполнять необходимые команды, или, что еще хуже, определить новую политику для этого (audit2allow может помочь в этом последнем пункте).

Команда «setenforce permissive» полезна только для проверки того, что selinux является проблемой при сохранении активных журналов.

Возможно, вы захотите взглянуть на следующие логические значения: allow_httpd_mod_auth_pam

Я думаю, что есть также один для исполнения системных двоичных файлов, но не могу найти его обратно.

Чтобы получить список доступных логических значений: getsebool -a

Чтобы установить данный логический setsebool

0

В кодовой странице состояния для pwauth говорится:

Если вы видите отрицательный код ошибки (или число, например 255 или 254), сообщенное в журнале ошибок Apache, то это код ошибки из mod_authnz_external и означает, что он вообще не смог запустить pwauth.

в документации к mod-auth-external написано:

Второе сообщение об ошибке на самом деле генерируется mod_auth_external. Это просто говорит, что аутентификация не удалась для пользователя. Обычно он дает код состояния, возвращенный средством проверки подлинности в скобках, но если средство проверки подлинности не может быть выполнено, он покажет телефонный код состояния -1 (который в некоторых системах отображается как 255).

Похоже, что вы не можете запустить pwauth из apache, вы уверены, что переключились на нужного пользователя в данный момент (так как вы можете запустить его как apache)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .