Я создал репозиторий с использованием 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 .
@groupname
этим одним битом при определении правил, это идеально в ваших примерах, просто указывая.
@ Стивен Бейли
Чтобы завершить свой ответ, вы также можете делегировать права пользователя менеджеру проекта через простой текстовый файл в вашем репозитории.
Для этого вы настраиваете свою базу данных 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
файл TEMPLATE, представленный выше/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.
Apache Subversion поддерживает авторизацию на основе путей, которая помогает настраивать детальные разрешения для учетных записей пользователей и групп на пути в ваших репозиториях (файлах или каталогах). Авторизация на основе пути поддерживает три уровня доступа - нет доступа, только чтение и чтение / запись.
Разрешения авторизации на основе пути хранятся в файлах авторизации для каждого репозитория или сервера со специальным синтаксисом. Вот пример из SVNBook:
[calc:/branches/calc/bug-142]
harry = rw
sally = r
Если вам требуется сложная структура разрешений с множеством путей и учетных записей, вы можете воспользоваться инструментами управления разрешениями на основе графического интерфейса, предоставляемыми VisualSVN Server:
Разрешения репозитория в VisualSVN Server Manager
Разрешения репозитория в PowerShell
Пользователи без прав администратора могут управлять разрешениями с помощью инструмента RepoCfg.