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

Запуск OpenOffice в качестве службы Daemontools, не вызывающей пользователя

Моя проблема в том, что при запуске с Daemontools файлы, созданные OpenOffice (который работает в режиме сервера), принадлежат пользователю root (и в корневой группе). Когда я запускаю сценарий запуска Daemontools вручную, OpenOffice правильно создает файл с нужными мне разрешениями (в данном случае группа «oinstall»).

У меня есть пользователь unix по имени oracle, который является членом группы oinstall. Пользователь oracle может запускать / останавливать сервер OpenOffice, которым управляет служба Daemontools. Права доступа к сервису выглядят так:

[oracle@try1 pdf]$ ls -l /service/
drwxrwsr-x 3 root oinstall 4096 Dec  3  2012 OpenOfficePROD

[oracle@try1 pdf]$ ls -l /service/OpenOfficePROD/
-r--rws--- 1 root oinstall  175 Dec  3  2012 run
drwxrws--- 2 root oinstall 4096 Sep  2 15:31 supervise

[oracle@try1 pdf]$ ls -l /service/OpenOfficePROD/supervise/
prw-rws--- 1 root oinstall  0 Sep  2 15:31 control
-rw-rws--- 1 root oinstall  0 Sep  4  2012 lock
prw-rws--- 1 root oinstall  0 Sep  4  2012 ok
-rw-r--r-- 1 root oinstall 18 Sep  2 15:31 status

Когда я вручную запускаю сервер OpenOffice, запустив сценарий run от имени пользователя oracle, я получаю файлы, созданные с желаемыми разрешениями, например.

-rw-r ----- 1 oracle oinstall 20956 2 сентября 15:48 myfile.pdf

Но когда я использую daemontools для запуска сервера OpenOffice (даже в качестве пользователя Oracle), файлы создаются следующим образом:

-rw-r ----- 1 root root 20956 2 сентября 15:28 myfile.pdf

Вот мой сценарий запуска:

#!/bin/sh


exec 2>&1
export HOME=/home/oracle
exec /usr/bin/soffice -invisible -nologo -headless -nofirststartwizard -accept="socket,port=8099;urp;StarOffice.ServiceManager"

Возможно, вы захотите использовать setuidgid в /service/OpenOfficePROD/run скрипт, чтобы daemontools запускал вашу службу от имени правильного пользователя.

#!/bin/sh
exec 2>&1
export HOME=/home/oracle
exec setuidgid oracle /usr/bin/soffice -invisible -nologo -headless -nofirststartwizard -accept="socket,port=8099;urp;StarOffice.ServiceManager