Настройка сервера SVN для нескольких пользователей через http

Функция аннотации SVN довольно мощная и позволяет быстро определить, кого искать для определенной функции в конкретной строке кода. Эта функция становится немного более ограниченной (но все же полезной), если пользователи получают доступ к SVN через http. Таким образом, учетные данные не обмениваются, поэтому в аннотации не указано имя строки, измененной разработчиком, который использует http для фиксации изменения.

Вопрос в том, есть ли у разработчика способ передачи учетных данных определенного типа в SVN на сервере, чтобы однозначно идентифицировать их фиксацию? Это просто наличие идентификатора, который требуется в этой среде. Альтернативные методы, такие как svn + ssh и файловые протоколы, недоступны. Наконец, этот сервер находится во внутренней локальной сети, а не в публичной. Советы по https также приветствуются.

Сервер SVN работает в Linux с Apache2.

4 ответа

Поскольку вы используете SVN через Apache, вы можете воспользоваться встроенными в Apache методами аутентификации для управления доступом / отслеживанием изменений в вашем хранилище. Пример ниже будет работать с настройкой в ​​стиле htaccess:

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /path/to/user/list
Require valid-user

Вы можете настроить это в файле htaccess или в файле конфигурации VirtualHost.

В конфиге apache:

<Location /svn>
    DAV svn
    SVNPath /mnt/big/svn
    AuthType Basic
    AuthName "SVN Server"
    AuthUserFile /etc/apache2/svn.pass
    Require valid-user
    AuthzSVNAccessFile /etc/apache2/svn_authz

и /etc/apache2/svn_authz может содержать детальное управление тем, кто может получить доступ к чему:

[groups]
ops=user1,user2
it=user2,user3

[/]
* = rw

[/ops]
* =
@ops=rw

[/ro]
* = 
@ops = r
@it = r
user4 = rw

если у вас есть сервер каталогов ldap / active, вы можете использовать его вместо AuthUserFile для аутентификации Apache.

Короткий ответ: mod_authz_svn

Вы можете немного рассказать об apache + svn + mod_autz_svn и кое-что еще из моих слайдов, представленных на Международной конференции PHP '09, доступных по адресу http://superalbert.it/download/misc/PHPCon09_SVN_advanced.pdf

Этот ответ предполагает, что ваши разработчики используют Windows, а у вас есть контроллер домена Active Directory.

Вы можете присоединить сервер Linux SVN к домену, следуя этой статье.

Оттуда вы настраиваете apache для аутентификации в AD с использованием Kerberos. Сначала установите mod_auth_kerb, затем подключите apache2 к Kerberos для аутентификации. Смотрите документацию Microsoft. Убедитесь, что вы внедрили SSL, если вообще беспокоитесь о безопасности между клиентом и сервером.

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

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

Другие вопросы по тегам