Запускать демон svnserve с правами другого пользователя. Как?

ROSA Enterprise Linux Server -- вопросы и проблемы
Правила форума
Уважаемые пользователи! Поддержка, ответы на вопросы и проблемы по серверу принимаются:
1) на багзилле http://bugs.rosalinux.ru/enter_bug.cgi? ... A%20Server
2) или после заполнения формы на http://www.rosalab.ru/products/server/download вы получаете 30 дней БЕСПЛАТНОЙ техподдержки по серверу.
Ответы на ваши вопросы на форуме НЕ ГАРАНТИРУЮТСЯ. Спасибо за понимание!
Ответить
Аватара пользователя
Yamah
Сообщения: 1361
Зарегистрирован: 04 май 2012, 06:30
Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10
Контактная информация:

Запускать демон svnserve с правами другого пользователя. Как?

Сообщение Yamah » 22 дек 2014, 13:31

Есть необходимость читать базы SVN другим пользователем, нежели root, и при этом нельзя (по соображениям безопасности, разумеется) добавить пользователя в группу root.
Тупо поменять права на базы SVN результата не даст - после первого же изменения файлов баз, они слетят на права пользователя, от которого запущен svnserve. Нужен запуск демона svnserve от другого пользователя.
Пока не могу найти решение для RELS (CentOS), которое позволит запустить демон от другого пользователя.

Это нужно для работы:
- скрипта бэкапа, выполняемого на удаленной машине и по SSH тянущего RSYNC-ом изменения;
- apache | websvn (перейти полностью на DAV-SVN пока не получается, но черный вход до репозиториев нужен для админских целей).

Аватара пользователя
Yamah
Сообщения: 1361
Зарегистрирован: 04 май 2012, 06:30
Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10
Контактная информация:

Re: Запускать демон svnserve с правами другого пользователя. Как?

Сообщение Yamah » 23 дек 2014, 09:28

Привел init-файл к такому виду.

Код: Выделить всё

<cut>
exec=/usr/bin/svnserve
prog=svnserve
pidfile=${PIDFILE-/var/run/svnserve.pid}
lockfile=${LOCKFILE-/var/lock/subsys/svnserve}
args="--daemon --pid-file=${pidfile} $OPTIONS"
user=${USER-apache}
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog

start() {
    [ -x $exec ] || exit 5
    [ -f $config ] || exit 6
    echo -n $"Starting $prog: "
    daemon --user=${user} --pidfile=${pidfile} $exec $args
    retval=$?
    echo
    if [ $retval -eq 0 ]; then
        touch $lockfile || retval=4
    fi
    return $retval
}
<cut>
Но демон все равно запускается с правами root-а.

Аватара пользователя
Yamah
Сообщения: 1361
Зарегистрирован: 04 май 2012, 06:30
Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10
Контактная информация:

Re: Запускать демон svnserve с правами другого пользователя. Как?

Сообщение Yamah » 28 фев 2015, 11:04

Все. Нашел решение.
Нужно пропатчить инит-скрипт

Код: Выделить всё

--- svnserve.orig       2014-03-10 23:05:06.000000000 +0700
+++ svnserve    2015-02-25 21:13:43.554000938 +0600
@@ -30,15 +30,17 @@
 pidfile=${PIDFILE-/var/run/svnserve.pid}
 lockfile=${LOCKFILE-/var/lock/subsys/svnserve}
 args="--daemon --pid-file=${pidfile} $OPTIONS"
+USER="apache"
 [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
-
 lockfile=/var/lock/subsys/$prog
 
 start() {
     [ -x $exec ] || exit 5
     [ -f $config ] || exit 6
     echo -n $"Starting $prog: "
-    daemon --pidfile=${pidfile} $exec $args
+    touch $pidfile
+    chown $USER $pidfile
+    daemon --user=$USER --pidfile=${pidfile} $exec $args
     retval=$?
     echo
     if [ $retval -eq 0 ]; then


Ответить