Настройка доступа ко множеству svn-репозиториев через один конфиг
Передо мной стаяла задача настроить доступ ко множеству svn-репозиториев через один простой конфигурационный файл. После того как была выполнена установлена и настройка связки SVN (Subversion) + Apache сделать это было довольно просто. Необходимо пройти четыре простых этапа:
- Создание svn-репозиториев
- Создание пользователей svn
- Настройка доступов к репозиториям через конфигурационный файл
- Внесение изменений в subversion.conf
Рассмотрим каждый из этапов подробнее …
Создание svn-репозиториев
Перед созданием репозиториев необходимо создать для них одну родительскую директорию, например,
mkdir /svn/repos
А далее внутри нее нужно уже создать все необходимые репозитории
svnadmin create имя_репозитория_1
svnadmin create имя_репозитория_2
…
Не забудьте дать apache полный доступ к репозиторию, назначив владельцем
chown apache.apache -R repos
Создание пользователей svn
Создадим папку для управления доступом, например,
mkdir /svn/access
И добавим туда пользователей одной простой строкой
htpasswd -bcm /svn/access/users user_name user_password
, где
- b – флаг для указания пароля прямо в строке создания пользователя;
- с – флаг, выполняющий создание файла с пользователями users и должен присутствовать только при создании первого пользователя;
- m – флаг, отвечающий за хранения паролей не в открытом виде, а в виде хеша.
Настройка доступов к репозиториям через конфигурационный файл
Создадим в папке /svn/access файл control и наполним его примерно следующим содержимым
[/]
* =
[groups]
repo1_group1 = user1
repo2_group1 = user2, user3
repo2_group2 = user1, user4
...
[repo1:/]
@repo1_group1 = rw
[repo2:/]
@repo2_group1 = r
@repo2_group2 = rw
...
Прокомментирую вышеприведенный код:
- В первых двух строках мы закрываем доступ к корневой папке репозиториев
- В секции groups мы определяем группы доступа (repo1_group1, repo2_group1, …) к репозиториям для пользователей (user1, user2, …)
- Ниже расположены названия репозиториев с указанием групп доступа и уровнем доступа (r – чтение; w - запись)
Внесение изменений в subversion.conf
Далее нужно внести в конфигурационный файл связки SVN и Apache следующий код, который, думаю, в комментариях не нуждается.
<Location /syssvn>
DAV svn
SVNParentPath /svn/repos
AuthzSVNAccessFile /svn/access/control
Satisfy Any
Require valid-user
AuthType Basic
AuthName "Subversion repositories "
AuthUserFile /svn/access/users
</Location>
После всех этих махинаций мы получили удобное разграничение доступа между пользователями и доступ к репозиториям через урл вида
http://you_ip/syssvn/repo_name
Нет обратных ссылок на эту запись.