Как настроить контроль доступа в SVN? - PullRequest
79 голосов
/ 17 сентября 2008

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

Как мне этого добиться?

Ответы [ 6 ]

82 голосов
/ 17 сентября 2008

В вашей папке svn \ repos \ YourRepo \ conf вы найдете два файла: authz и passwd . Это те два, которые вам нужно настроить.

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

[users]
User1=password1
User2=password2

Затем вы хотите назначить соответствующие разрешения с помощью файла authz :

Создайте нужные вам концептуальные группы и добавьте в них людей:

[groups]
allaccess = user1
someaccess = user2

Затем выберите доступ, который у них есть, как к разрешениям, так и к уровню проекта.

Итак, давайте предоставим нашим парням "все права доступа" полный доступ из корня:

[/]
@allaccess = rw

Но предоставьте нашим парням "некоторого доступа" доступ только для чтения к какому-либо проекту более низкого уровня:

[/someproject]
@someaccess = r

Вы также найдете простую документацию в файлах authz и passwd .

27 голосов
/ 17 сентября 2008

@ Стивен Бейли

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

Для этого вы настраиваете свою базу данных SVN с файлом по умолчанию authz, содержащим следующее.

###########################################################################
# The content of this file always precedes the content of the
# $REPOS/admin/acl_descriptions.txt file.
# It describes the immutable permissions on main folders.
###########################################################################
[groups]
svnadmins = xxx,yyy,....

[/]
@svnadmins = rw
* = r
[/admin]
@svnadmins = rw
@projadmins = r
* =

[/admin/acl_descriptions.txt]
@projadmins = rw

Этот файл authz по умолчанию разрешает администраторам SVN изменять обычный видимый текстовый файл в вашем хранилище SVN, называемый '/ admin / acl_description.txt' , в котором администраторы SVN или руководители проектов будут изменить и зарегистрировать пользователей.

Затем вы устанавливаете ловушку предварительной фиксации, которая будет определять, состоит ли ревизия из этого файла (и только этого файла).

Если это так, сценарии ловушки будут проверять содержимое вашего простого текстового файла и проверять, соответствует ли каждая строка правильному синтаксису SVN.

Затем ловушка после фиксации обновит файл \conf\authz с сцеплением из:

  • ШАБЛОН authz файл, представленный выше
  • простой текстовый файл /admin/acl_descriptions.txt

Первая итерация выполняется администратором SVN, он добавляет:

[groups]
projadmins = zzzz

Он фиксирует свою модификацию и обновляет файл authz.

Тогда менеджер проекта 'zzzz' может добавлять, удалять или объявлять любую группу пользователей и любых пользователей, которых он хочет. Он фиксирует файл и файл authz обновляется.

Таким образом, администратору SVN не нужно следить за всеми пользователями всех хранилищ SVN .

26 голосов
/ 25 ноября 2009

Один гоча, который поймал меня:

[repos:/path/to/dir/] # this won't work

но

[repos:/path/to/dir]  # this is right

Вам не нужно указывать косую черту в каталоге, иначе вы увидите 403 для запроса OPTIONS.

8 голосов
/ 17 сентября 2008

Вы можете использовать svn + ssh:, а затем он основан на управлении доступом к хранилищу в указанном месте.

Так я размещаю репозиторий групп проектов в Uni, где я не могу ничего настроить. Просто наличие каталога, которым владеет группа, и запуск там svn-admin (или чего-то еще) означает, что мне не нужно было настраивать.

5 голосов
/ 17 сентября 2008

Хотя я бы сказал, что подход Apache лучше, SVN Serve работает нормально и довольно просто.

Предполагается, что ваш репозиторий называется "my_repo" и хранится в каталоге c: \ svn_repos:

  1. Создайте файл с именем passwd в C: \ svn_repos \ my_repo \ conf. Этот файл должен выглядеть так:

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. В c: \ svn_repos \ my_repo \ conf \ svnserve.conf set

    [general]
    password-db = passwd
    auth-access=read
    auth-access=write
    

Это заставит пользователей войти в систему для чтения или записи в этом хранилище.

Выполните следующие шаги для каждого хранилища, включая только соответствующих пользователей в файле passwd для каждого хранилища.

3 голосов
/ 17 сентября 2008

Лучший способ - настроить Apache и настроить доступ через него. Проверьте svn book за помощью. Если вы не хотите использовать Apache, вы также можете сделать минималистичный контроль доступа с помощью svnserve.

...