Подтвердить что ты не робот

Как заставить 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 внутренних серверов. Логично, почему веб-служба должна иметь доступ к файлу аутентификации системы?

Большое спасибо!

4b9b3361

Ответ 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