Запуск 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 от имени пользователя-оракула, я получаю файлы, созданные с необходимыми разрешениями, например

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

1 ответ

Решение

Вы можете использовать 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
Другие вопросы по тегам