SCROLL
Среднее время на прочтение: 3 мин.

Установка Subversion на базе Ubuntu 14.04 Trusty Tahr / Debian 8 Jessie. Разграничение прав пользователей Subversion

Разберем как развернуть систему управления версиями Subversion (SVN) на Ubuntu 14.04 Trusty Tahr. Так же данная инструкция работает на Debian 8 Jessie. Рассмотрим базовые параметры управления SVN (Создание, удалении репозиториев), разграничение прав пользователей SVN.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

sudo apt-get update && sudo apt-get upgrade -y

 

Добавляем системного пользователя (subversion), который будет владельцем репозитория и от него будет запускаться демон (SVN):

sudo adduser subversion --system --shell /sbin/nologin --group --disabled-password --home /var/svn

 

Назначаем права доступа к папке для размещения репозиториев (SVN):

sudo chown -R subversion:subversion /var/svn
sudo chmod -R 775 /var/svn

 

Установка Subversion

Устанавливаем Subversion из репозиториев:

sudo apt-get install subversion

 

Создаем стартовый скрипт SVN сервера:

sudo nano /etc/init.d/svnserve

 

Вписываем в него следующее:

#!/bin/sh

### BEGIN INIT INFO
# Provides: svnserve
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop svnserve
# Description: Start/stop svnserve
### END INIT INFO

test -f /usr/bin/svnserve || exit 0

OPTIONS="-d -T -r /var/svn"

case "$1" in
 start)
 echo -n "Starting subversion daemon:"
 echo -n " svnserve"
 start-stop-daemon --start --quiet --chuid subversion:subversion --exec /usr/bin/svnserve -- $OPTIONS
 echo "."
 ;;

stop)
 echo -n "Stopping subversion daemon:"
 echo -n " svnserve"
 start-stop-daemon --stop --quiet --exec /usr/bin/svnserve
 echo "."
 ;;

reload)
 ;;

force-reload)
 $0 restart
 ;;

restart)
 $0 stop
 $0 start
 ;;

*)
 echo "Usage: /etc/init.d/subversion (start|stop|reload|restart)"
 exit 1
 ;;

esac

exit 0

 

Делаем скрипт исполняемым и добавляем в автозагрузку:

sudo chmod a+x /etc/init.d/svnserve
sudo update-rc.d svnserve defaults

 

Установка SVN завершена. Можно приступать к созданию репозиториев и настройке доступа к ним.

 

Управление репозиториями Subversion

Приведу пример основных команд для управления системой контроля версий SVN посредством командной строки.

 

Создание репозитория:

svnadmin create "­/pa­th/­to/­rep­osi­tor­y"

Создание репозитория использующий Berkeley-DB базу данных:

svnadmin create --fs-type bdb /var/svn/jakonda.test

Создание репозитория использующий FSFS базу данных:

svnadmin create --fs-type fsfs /var/svn/jakonda.test

[stextbox id=’info’]После создания репозитория, не забываем назначить ему права доступа, как у корневой папки размещения репозиториев.[/stextbox]

 

Удаление репозитория:

svn delete "­/pa­th"

Копирование репозитория:

svn copy "­/so­urc­e" "­/ta­rge­t"

Перемещение репозитория:

svn move "­/so­urc­e" "­/ta­rge­t"

Импорт в репозиторий SVN локальный проект:

svn import --username=user /local/path /pa­th/­to/­rep­osi­tor­y

Получить из репозитория рабочую копию (checkout):

svn co --username=user svn://hostname/svn/repository /local/path

Получить версию для публикации\компиляции (без базы SVN):

svn export --username=user svn://hostname/svn/repository /local/path

 

Разграничение прав пользователей Subversion

Настройка доступа к репозиторию выполняется с помощью конфигурационных файлов. Конфигурационный файл и файлы с пользователями и настройками доступа хранятся в папке conf в корне репозитория (в нашем примере это /var/svn/jakonda.test/conf)

 

Основной конфигурационный файл svnserve.conf:

[general]
# Доступ c анонимным доступом ("write", "read" или "none")
anon-access = none
# Доступ для авторизованых пользователей:("write", "read" или "none")
auth-access = write
# Имя файла с пользователями
password-db = passwd
# Имя файла с правами
authz-db = authz
# Названия репозитория
realm = My First Repository

 

Файл содержащий пользователей и пароли (пароли хранятся в открытом виде) passwd:

[users]
user1 = password1
user2 = password2

 

Файл содержащий группы пользователей и права на репозиторий или на часть его athz:

# Группы
[groups]
group1 = user1,user2

# Права на корень
# группе group1 только для чтения
# пользователю user2 полный доступ
# всем остальным запретить доступ
[/]
@group1 = r
user2 = rw
* = r

 

Настройка WebDAV доступа к Subversion

Устанавливаем необходимые зависимости:

sudo apt-get install apache2 libapache2-svn libapache2-mod-svn -y

 

Настраиваем политику доступа к репозиториям subversion через apache. Редактируем файл конфигурации apache:

sudo nano /etc/apache2/mods-available/dav_svn.conf

 

Приводим файл к виду:

<Location /svn>
 # Включение доступа к репозиторию subversion
 DAV svn

 # Путь к конкретному репозиторию
 #SVNPath /var/lib/svn

 # Альтернатива SVNPath. Если необходимо доступ к нескольких репозиториям,
 # располагающимся в одной директории.
 # Задается либо SVNPath, либо SVNParentPath. Оба параметра одновременно
 # задавать нельзя.
 SVNParentPath /var/svn-repos

 # Включение аутентификации
 AuthType Basic
 AuthName "Subversion Repository"
 AuthUserFile /etc/apache2/dav_svn.passwd
 Require valid-user
</Location>

 

Далее, необходимо задать пользователей, которым разрешен доступ к subversion через apache:

# Создается файл пользователей и добавляется пользователь jakonda1
sudo htpasswd -c /etc/apache2/dav_svn.passwd jakonda1

# Добавляется пользователь jakonda2
sudo htpasswd /etc/apache2/dav_svn.passwd jakonda2

 

Для применения изменений, перезапускаем apache:

sudo service apache2 restart

 

Разрешаем доступ к репозиториям для http-сервера (www-data) и пользователям из группы subversion:

sudo chown -R www-data:subversion /var/svn

 

На этом установка и настройка Subversion закончена. SVN готов к работе.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

Обсуждение

0 комментариев

Нет комментариев.