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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Для этого вы настраиваете свою базу данных 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 умолчанию authz администраторам SVN изменять видимый текстовый файл в вашем SVN-репозитории, называемый /admin/acl_description.txt, в котором администраторы SVN или руководители проектов будут изменять и регистрировать пользователей.

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

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

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

  • файл authz представленный выше
  • простой текстовый файл /admin/acl_descriptions.txt

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

[groups]
projadmins = zzzz

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

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

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

Ответ 3

Один из них поймал меня:

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

но

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

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

Ответ 4

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

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

Ответ 5

Хотя я бы посоветовал подход 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 для каждого репозитория.

Ответ 6

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