Как заставить Subversion использовать учетные записи системы Linux для аутентификации?
Я установил Ubuntu Server для Subversion с интерфейсом Apache/WebDAV для обмена репозиториями с другими разработчиками. Мой вопрос: как я могу заставить Subversion использовать учетные записи систем Linux для аутентификации? Это приведет к очень простому управлению учетной записью Subversion. Subversion с Apache/WebDAV в настоящее время работает с этой конфигурацией:
Содержимое/etc/apache2/mods-available/dav_svn.conf:
<Location /svn>
DAV svn
SVNParentPath /home/svn
SVNListParentPath On
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
Я попытался сменить AuthUserFile /etc/apache2/dav_svn.passwd
на AuthUserFile /etc/shadow
без успеха. Это заставляет сервер отвечать с внутренней ошибкой 500 внутренних серверов. Логично, почему веб-служба должна иметь доступ к файлу аутентификации системы?
Большое спасибо!
Ответы
Ответ 1
Ok! Я сделал это! И я думал, что будет очень сложно найти ответ!
Мы должны сказать Apache, чтобы использовать "внешний поставщик аутентификации", Apache не будет проверять подлинность, но делегирует задачу внешнему аутентификатору, в этом случае чудесному pwauth.
Итак, шаги, которые я сделал, чтобы заставить его работать, были:
-
Установите модуль Mod_Auth_External для Apache2 и pwauth
sudo apt-get install libapache2-mod-authnz-external pwauth
-
Включен новый модуль для Apache: sudo a2enmod authnz_external
в терминале.
-
Настроил мой apache.conf
(или у вас может быть httpd.conf
), чтобы добавить внешний аутентификатор (на основе в этой статье)
AddExternalAuth pwauth /usr/local/libexec/pwauth
SetExternalAuthMethod pwauth pipe
-
Отредактировано мое /etc/apache2/mods-available/dav_svn.conf
, чтобы установить нового внешнего поставщика авторизации:
...
AuthType Basic
AuthName "Subversion Repository"
AuthBasicProvider external
AuthExternal pwauth
Require valid-user
...
-
Протестировано и отлично работает!
Ответ 2
Не могли бы вы использовать ssh для доступа к репозиториям subversion вместо WebDAV?
svn checkout svn+ssh://[email protected]:/home/svn/repository/trunk
Ответ 3
Я еще не могу прокомментировать, но хотел добавить, что в Ubuntu 12.04 путь pwauth
изменился, так что теперь это должно быть
AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe
и это удобно разместить в отдельном файле внутри etc/apache2/conf.d