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

svn authorization svn-administraton

220192 просмотра

6 ответа

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

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

Автор: user15425 Источник Размещён: 22.07.2019 02:04

Ответы (6)


82 плюса

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

Автор: Stephen Bailey Размещён: 17.09.2008 09:29

27 плюса

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

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

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

Затем ловушка post-commit обновит \conf\authzфайл с помощью конкатенации :

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

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

[groups]
projadmins = zzzz

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

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

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

Автор: VonC Размещён: 17.09.2008 01:49

26 плюса

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

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

но

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

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

Автор: Chris Burgess Размещён: 25.11.2009 12:43

8 плюса

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

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

Автор: Matthew Schinckel Размещён: 17.09.2008 10:12

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файл для каждого репозитория.

Автор: RB. Размещён: 17.09.2008 09:31

3 плюса

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

Автор: Mladen Mihajlovic Размещён: 17.09.2008 09:17
Вопросы из категории :
32x32