it-swarm-ru.tech

Как настроить контроль доступа в SVN?

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

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

79
user15425

В вашей папке 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.

82
Stephen Bailey

@ Стефан Бейли

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

Для этого вы настраиваете свою базу данных 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.

27
VonC

Одна ошибка, которая поймала меня:

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

но

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

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

26
Chris Burgess

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

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

8
Matthew Schinckel

Хотя я бы посоветовал подход 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

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

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

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

5
RB.

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

3
Mladen Mihajlovic