Установка 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 "/path/to/repository"
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 "/path"
JUQwJTlBJUQwJUJFJUQwJUJGJUQwJUI4JUQxJTgwJUQwJUJFJUQwJUIyJUQwJUIwJUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJTNB
svn copy "/source" "/target"
JUQwJTlGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUJDJUQwJUI1JUQxJTg5JUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJTNB
svn move "/source" "/target"
JUQwJTk4JUQwJUJDJUQwJUJGJUQwJUJFJUQxJTgwJUQxJTgyJTIwJUQwJUIyJTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQwJUI5JTIwU1ZOJTIwJUQwJUJCJUQwJUJFJUQwJUJBJUQwJUIwJUQwJUJCJUQxJThDJUQwJUJEJUQxJThCJUQwJUI5JTIwJUQwJUJGJUQxJTgwJUQwJUJFJUQwJUI1JUQwJUJBJUQxJTgyJTNB
svn import --username=user /local/path /path/to/repository
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
Понравилась или оказалась полезной статья, поблагодари автора
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.