28 марта 2009 г. Subversion Svn FreeBSD

Настройка групп и прав в Subversion

subversion_gr

Порой требуется разграничить права доступа участникам вашего сервера контроля версий, например для того, чтобы некоторые не имели доступ к конкретному репозиторию.

Для этого вам понадобится создать в системе файл svn-authz-access (называйте его как хотите) и прописать путь до файла в секцию настройки SVN в Apache.

Настройки

Открываем для редактирования файл /usr/local/etc/apache22/httpd.conf и добавляем в секцию <location /svn> запись о файле:

AuthzSVNAccessFile /home/svn/svn-authz-access

Информацию о секции можете посмотреть в предыдущем моем посте FreeBSD. Установка и настройка Subversion

Создадим и отредактируем файл svn-authz-access

touch /home/svn/svn-authz-access
vi /home/svn/svn-authz-access

Группы

Группы перечисляются в столбик и напротив каждой группы указываются имена пользователей

[groups]
devel = adw0rd, vasac
tester = epsyl

Секция корня, где все репозитории

Указываются группы в столбик и права

[/]
@devel = r
* =

Секции для репозиториев

[pyha-ru:/]
@devel = rw
* =

[example-com:/]
@devel = rw
@tester = rw
* =

@GROUP = - для группы GROUP назначаются права.
* = - означает всем (other).
rw - чтение и запись.
r - чтение
w - запись


В итоге у нас должно получится два файла

Файл httpd.conf

<location /svn>
   DAV svn

   # разрешает выдавать перечень всех доступных хранилищ в папке SVNParentPath
   SVNListParentPath on
   SVNParentPath /home/svn/repos
   SVNPathAuthz off

   # включения базовой аутентификации, т.е. имя_пользователя/пароль
   AuthType Basic
   AuthName "Subversion repository"
   AuthUserFile /home/svn/svn-auth-file

   # предписывает, что только пользователям, предоставившим правильные имя_пользователя/пароль,
   # будет разрешён доступ к URL
   Require valid-user

   # Права и группы
   AuthzSVNAccessFile /home/svn/svn-authz-access

</location>

Файл svn-authz-access

[groups]
devel = adw0rd, vasac
tester = epsyl

[/] @devel = r * = [pyha-ru:/] @devel = rw * = [example-com:/] @devel = rw @tester = rw * =

Перезагружаем Apache

apachectl restart

Ну вот и все, теперь мы разграничили права :)

Комментарии

Существует ли возможность назначить права на подпапку репозитрия ?

Попробуйте так:

[project:/path/]

спс большое

Есть ли возможность блокировать отдельные файлы?

Спасибо, уже сам нашел. Достаточно указать относительный путь к самому файлу.

Скажите пожалуйста, можно ли назначить права сразу всем репозиториям в определенном каталоге, например так:

[*:/www/]
* = r

Т.е. любой пользователь имеет право read каталога www по всех репозиториях.

Спасибо.

Не знаю, и нет возможности проверить, давно уже пользуюсь git и gitolite.

А вы пробовали сами запустить свой пример? С виду должно работать, я бы еще попробовал

[:/]
* = r

Оставьте свой комментарий

Markdown