Моя проблема в том, что при запуске с 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