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