Страница 1 из 1

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

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

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

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

Добавлено: 23 дек 2014, 09:28
Yamah
Привел 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-а.

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

Добавлено: 28 фев 2015, 11:04
Yamah
Все. Нашел решение.
Нужно пропатчить инит-скрипт

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

--- 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