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

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

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

 

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

JUQwJTlGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUI0JTIwJUQwJUJEJUQwJUIwJUQxJTg3JUQwJUIwJUQwJUJCJUQwJUJFJUQwJUJDJTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUJBJUQwJUI4JTIwJUQwJUJFJUQwJUIxJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUJCJUQxJThGJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUI4JUQxJTgxJUQxJTgyJUQwJUI1JUQwJUJDJUQxJTgzJTIwJUQwJUI0JUQwJUJFJTIwJUQwJUIwJUQwJUJBJUQxJTgyJUQxJTgzJUQwJUIwJUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQxJTgxJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUJFJUQxJThGJUQwJUJEJUQwJUI4JUQxJThGJTNB

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

JUQwJUEzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUIwJUQwJUIyJUQwJUJCJUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwU3VidmVyc2lvbiVDMiVBMCVEMCVCOCVEMCVCNyUyMCVEMSU4MCVEMCVCNSVEMCVCRiVEMCVCRSVEMCVCNyVEMCVCOCVEMSU4MiVEMCVCRSVEMSU4MCVEMCVCOCVEMCVCNSVEMCVCMiUzQQ==

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

 

JUQwJTk0JUQwJUI1JUQwJUJCJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQxJThGJUQwJUI1JUQwJUJDJUQxJThCJUQwJUJDJTIwJUQwJUI4JTIwJUQwJUI0JUQwJUJFJUQwJUIxJUQwJUIwJUQwJUIyJUQwJUJCJUQxJThGJUQwJUI1JUQwJUJDJTIwJUQwJUIyJTIwJUQwJUIwJUQwJUIyJUQxJTgyJUQwJUJFJUQwJUI3JUQwJUIwJUQwJUIzJUQxJTgwJUQxJTgzJUQwJUI3JUQwJUJBJUQxJTgzJTNB

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

 

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

 

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

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

 

JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJTNB

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

JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQxJTgzJUQxJThFJUQxJTg5JUQwJUI4JUQwJUI5JTIwQmVya2VsZXktREIlQzIlQTAlRDAlQjElRDAlQjAlRDAlQjclRDElODMlMjAlRDAlQjQlRDAlQjAlRDAlQkQlRDAlQkQlRDElOEIlRDElODUlM0E=

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

JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQxJTgzJUQxJThFJUQxJTg5JUQwJUI4JUQwJUI5JTIwRlNGUyVDMiVBMCVEMCVCMSVEMCVCMCVEMCVCNyVEMSU4MyUyMCVEMCVCNCVEMCVCMCVEMCVCRCVEMCVCRCVEMSU4QiVEMSU4NSUzQQ==

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

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

 

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

svn delete "­/pa­th"

JUQwJTlBJUQwJUJFJUQwJUJGJUQwJUI4JUQxJTgwJUQwJUJFJUQwJUIyJUQwJUIwJUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJTNB

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

JUQwJTlGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUJDJUQwJUI1JUQxJTg5JUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJTNB

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

JUQwJTk4JUQwJUJDJUQwJUJGJUQwJUJFJUQxJTgwJUQxJTgyJTIwJUQwJUIyJTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQwJUI5JTIwU1ZOJTIwJUQwJUJCJUQwJUJFJUQwJUJBJUQwJUIwJUQwJUJCJUQxJThDJUQwJUJEJUQxJThCJUQwJUI5JTIwJUQwJUJGJUQxJTgwJUQwJUJFJUQwJUI1JUQwJUJBJUQxJTgyJTNB

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

JUQwJTlGJUQwJUJFJUQwJUJCJUQxJTgzJUQxJTg3JUQwJUI4JUQxJTgyJUQxJThDJTIwJUQwJUI4JUQwJUI3JTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJTIwJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUJFJUQxJTg3JUQxJTgzJUQxJThFJTIwJUQwJUJBJUQwJUJFJUQwJUJGJUQwJUI4JUQxJThFJTIwKGNoZWNrb3V0KSUzQQ==

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

 

JUQwJUE0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQxJTgxJUQwJUJFJUQwJUI0JUQwJUI1JUQxJTgwJUQwJUI2JUQwJUIwJUQxJTg5JUQwJUI4JUQwJUI5JTIwJUQwJUIzJUQxJTgwJUQxJTgzJUQwJUJGJUQwJUJGJUQxJThCJTIwJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJCJUQwJUI1JUQwJUI5JTIwJUQwJUI4JTIwJUQwJUJGJUQxJTgwJUQwJUIwJUQwJUIyJUQwJUIwJTIwJUQwJUJEJUQwJUIwJTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQwJUI5JTIwJUQwJUI4JUQwJUJCJUQwJUI4JTIwJUQwJUJEJUQwJUIwJTIwJUQxJTg3JUQwJUIwJUQxJTgxJUQxJTgyJUQxJThDJTIwJUQwJUI1JUQwJUIzJUQwJUJFJTIwYXRoeiUzQQ==

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

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

 

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

JUQwJUEzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUIwJUQwJUIyJUQwJUJCJUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUJEJUQwJUI1JUQwJUJFJUQwJUIxJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUI4JUQwJUJDJUQxJThCJUQwJUI1JTIwJUQwJUI3JUQwJUIwJUQwJUIyJUQwJUI4JUQxJTgxJUQwJUI4JUQwJUJDJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI4JTNB

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

 

JUQwJTlEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUIwJUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUI4JUQxJTgyJUQwJUI4JUQwJUJBJUQxJTgzJTIwJUQwJUI0JUQwJUJFJUQxJTgxJUQxJTgyJUQxJTgzJUQwJUJGJUQwJUIwJTIwJUQwJUJBJTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJUQwJUJDJTIwc3VidmVyc2lvbiUyMCVEMSU4NyVEMCVCNSVEMSU4MCVEMCVCNSVEMCVCNyUyMGFwYWNoZS4lMjAlRDAlQTAlRDAlQjUlRDAlQjQlRDAlQjAlRDAlQkElRDElODIlRDAlQjglRDElODAlRDElODMlRDAlQjUlRDAlQkMlMjAlRDElODQlRDAlQjAlRDAlQjklRDAlQkIlMjAlRDAlQkElRDAlQkUlRDAlQkQlRDElODQlRDAlQjglRDAlQjMlRDElODMlRDElODAlRDAlQjAlRDElODYlRDAlQjglRDAlQjglMjBhcGFjaGUlM0E=

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

 

JUQwJTlGJUQxJTgwJUQwJUI4JUQwJUIyJUQwJUJFJUQwJUI0JUQwJUI4JUQwJUJDJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQwJUJBJTIwJUQwJUIyJUQwJUI4JUQwJUI0JUQxJTgzJTNB

<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

 

JUQwJTk0JUQwJUJCJUQxJThGJTIwJUQwJUJGJUQxJTgwJUQwJUI4JUQwJUJDJUQwJUI1JUQwJUJEJUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTIwJUQwJUI4JUQwJUI3JUQwJUJDJUQwJUI1JUQwJUJEJUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI5JTJDJTIwJUQwJUJGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUI3JUQwJUIwJUQwJUJGJUQxJTgzJUQxJTgxJUQwJUJBJUQwJUIwJUQwJUI1JUQwJUJDJTIwYXBhY2hlJTNB

sudo service apache2 restart

 

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

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

 

JUQwJTlEJUQwJUIwJTIwJUQxJThEJUQxJTgyJUQwJUJFJUQwJUJDJTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUJBJUQwJUIwJTIwJUQwJUI4JTIwJUQwJUJEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUI5JUQwJUJBJUQwJUIwJTIwU3VidmVyc2lvbiVDMiVBMCVEMCVCNyVEMCVCMCVEMCVCQSVEMCVCRSVEMCVCRCVEMSU4NyVEMCVCNSVEMCVCRCVEMCVCMC4lMjBTVk4lMjAlRDAlQjMlRDAlQkUlRDElODIlRDAlQkUlRDAlQjIlMjAlRDAlQkElMjAlRDElODAlRDAlQjAlRDAlQjElRDAlQkUlRDElODIlRDAlQjUu

 

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

 

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

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

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