Как заставить Subversion использовать системные учетные записи Linux для аутентификации? - PullRequest
11 голосов
/ 24 декабря 2010

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

Заранее большое спасибо!

Ответы [ 3 ]

20 голосов
/ 24 декабря 2010

Хорошо! Я это сделал! И я подумал, что будет очень трудно найти ответ!

Мы должны указать Apache использовать «внешний поставщик аутентификации», Apache не будет проверять аутентификацию, но делегирует задачу внешнему аутентификатору, в данном случае чудесному pwauth .

Итак, шаги, которые я сделал, чтобы это заработало, были:

  1. Установить модуль Mod_Auth_External для Apache2 и pwauth

    sudo apt-get install libapache2-mod-authnz-external pwauth
    
  2. Включен новый модуль для Apache: sudo a2enmod authnz_external в терминале.

  3. Настроил мой apache.conf (или у вас может быть httpd.conf) для добавления внешнего аутентификатора (на основе этой статьи ):

    AddExternalAuth pwauth /usr/local/libexec/pwauth
    SetExternalAuthMethod pwauth pipe
    
  4. Отредактировал мой /etc/apache2/mods-available/dav_svn.conf для установки нового внешнего поставщика аутентификации:

    ...
    AuthType Basic
    AuthName "Subversion Repository"
    AuthBasicProvider external
    AuthExternal pwauth
    Require valid-user
    ...
    
  5. Протестировано и отлично работает!

0 голосов
/ 05 марта 2014

Я пока не могу комментировать, но хотел добавить, что в Ubuntu 12.04 путь pwauth изменился, поэтому теперь это должно быть

AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe

, и это может быть удобно помещено в отдельный файл внутри etc/apache2/conf.d

0 голосов
/ 24 декабря 2010

Не могли бы вы использовать ssh для доступа к хранилищам Subversion вместо WebDAV?

svn checkout svn+ssh://user@server:/home/svn/repository/trunk
...