Назад | Перейти на главную страницу

конфигурация upstart для запуска демона синхронизации от имени пользователя без полномочий root

Я планирую использовать inosync для синхронизации данных с главного сервера на несколько клиентских серверов. Я создал пользователя с именем rsyncuser как на главном, так и на подчиненных серверах с разрешениями на доступ и беспарольным доступом по ssh от главного к подчиненным серверам.

Inosync работает, когда я использую его из командной строки как rsyncuser.

Затем я хочу, чтобы это запускалось автоматически при включении сервера. Я подумал, что выскочка - это способ заставить это работать.

Я не могу найти правильную команду выскочки, чтобы заставить это работать.

Вот мой файл конфига выскочки. Проблема, похоже, связана с запуском "inosync -d -c /etc/inosync/inosync_rsyncuser.py" от имени данного пользователя.

Как видите, я перепробовал несколько разных вариантов!

description     "start inosync to sync data to other CDN Servers as rsyncuser"
console output
#start on startup
#stop on shutdown
start on (net-device-up and local-filesystems)
stop on runlevel [016]

#start on runlevel [2345]
#stop on runlevel [!2345]
#kill timeout 30
env RUN_AS_USER=rsyncuser

expect fork

script
   echo "Inosync updtart job seems to have started" >> /tmp/upstart.log
#   exec sudo -u rsyncuser -c "ls -la" >> /tmp/upstart.log 2>&1
#   LOGFILE=/var/log/logfile.`date +%Y-%m-%d`.log

#   exec su - $RUN_AS_USER -c "inosync -d -c /etc/inosync/inosync_rsyncuser.py" >> $LOGFILE 2>&1
#  exec  su -c "ls -la" >> /tmp/upstart.log 2>&1
#   emit inosync_running
end script

sudo по умолчанию воздействует на большую часть среды. Попробуйте это (добавив -E):

exec sudo -E -u rsyncuser -c "ls -la" >> /tmp/upstart.log 2>&1

-E сообщает sudo о необходимости сохранения окружающей среды.