Я создал хранилище, используя SVN и загруженные проекты. Над этими проектами работают несколько пользователей. Но не всем требуется доступ ко всем проектам. Я хочу настроить пользовательские разрешения для каждого проекта.
Как мне этого добиться?
Я создал хранилище, используя SVN и загруженные проекты. Над этими проектами работают несколько пользователей. Но не всем требуется доступ ко всем проектам. Я хочу настроить пользовательские разрешения для каждого проекта.
Как мне этого добиться?
В папке 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.
@Стефан Бейли
Чтобы завершить свой ответ, вы также можете делегировать права пользователя менеджеру проекта через обычный текстовый файл в вашем хранилище.
Для этого вы настраиваете свою базу данных 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.
Один из них поймал меня:
[repos:/path/to/dir/] # this won't work
но
[repos:/path/to/dir] # this is right
Вам не нужно включать конечную косую черту в каталог, или вы увидите 403 для запроса OPTIONS.
Вы можете использовать svn + ssh :, и затем это на основе контроля доступа к хранилищу в указанном месте.
Вот как я размещаю репозиторий группы проектов в моем универмаге, где я больше ничего не могу настроить. Просто наличие каталога, которым владеет группа, и запуск там svn-admin (или чего бы то ни было) означает, что мне не нужно ничего настраивать.
Хотя я бы посоветовал подход Apache лучше, SVN Serve работает отлично и довольно просто.
Предполагая, что ваш репозиторий называется "my_repo", и он хранится в C:\svn_repos:
Создайте файл с именем "passwd" в "C:\svn_repos\my_repo\conf". Этот файл должен выглядеть так:
[Users]
username = password
john = johns_password
steve = steves_password
В C:\svn_repos\my_repo\conf\svnserve.conf установите:
[general]
password-db = passwd
auth-access=read
auth-access=write
Это заставит пользователей войти в систему для чтения или записи в этом хранилище.
Выполните следующие действия для каждого репозитория, включая только соответствующих пользователей в файле passwd
для каждого репозитория.
Лучший способ - настроить Apache и установить доступ через него. Обратитесь за помощью к svn book. Если вы не хотите использовать Apache, вы также можете выполнять минималистичный контроль доступа с помощью svnserve.