2008-09-17 6 views
77

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

Как это достичь?

ответ

3

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

82

В вашем SVN \ \ YourRepo РЕПО \ конф папке вы найдете два файла, AuthZ и PASSWD. Это те, которые вам нужно настроить.

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

[users] 
User1=password1 
User2=password2 

Затем вы хотите назначить разрешения в соответствии с AuthZ файла:

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

[groups] 
allaccess = user1 
someaccess = user2 

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

Так давайте дадим нашим «полный доступ» парням доступ из корня:

[/] 
@allaccess = rw 

Но только дать нашим «некоторые ACCESS» парням доступ только для чтения к некоторому нижнего проекта уровня:

[/someproject] 
@someaccess = r 

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

+7

актуальная страница руководства: http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html – ErichBSchulz 2012-11-29 02:42:15

+0

Примечание: он не будет работать, если вы будете обращаться к репозиторию напрямую через ssh (без svnserve) – 2016-02-07 15:48:42

+0

Когда я даю, например, одну папку под репозиторием для пользователя, пользователь может получить доступ только к этой папке с прямой ссылкой. Возможно ли, чтобы пользователь добавил репозиторий, и ему были показаны только назначенные ему папки? Спасибо за ответ . Группы – maoanz 2017-07-16 17:52:57

4

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

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

  1. Создайте файл с именем "ПАРОЛЬ" в "C: \ svn_repos \ my_repo \ конф". Этот файл должен выглядеть следующим образом:

    [Users] 
    username = password 
    john = johns_password 
    steve = steves_password 
    
  2. В C: \ svn_repos \ my_repo \ конф \ svnserve.conf набор

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

Это заставит пользователей войти в систему, чтобы читать или писать в этом репозиторий.

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

6

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

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

26

@Stephen Бейли

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

Для этого вы настраиваете базу данных 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_descriptions.txt», в которой администраторы SVN или менеджеры проектов будут изменять и зарегистрируйте пользователей.

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

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

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

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

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

[groups] 
projadmins = zzzz 

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

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

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

25

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

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

но

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

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

Смежные вопросы