私の問題は、Daemontoolsで起動したときに、OpenOffice(サーバーモードで実行される)によって作成されたファイルがroot(およびrootグループ)によって所有されていることです。 Daemontoolsの「run」スクリプトを手動で開始すると、OpenOfficeは必要な権限(この場合は「oinstall」グループ)でファイルを正しく作成します。
グループ「oinstall」のメンバーである「Oracle」というUNIXユーザーがいます。 Oracleユーザーは、Daemontoolsサービスによって制御されるOpenOfficeサーバーを起動/停止できます。サービスの権限は次のようになります。
[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サーバーを手動で起動すると、Oracleユーザーとして「run」スクリプトを実行することで、必要な権限で生成されたファイルを取得できます。
-rw-r ----- 1 Oracle oinstall 20956 Sep 2 15:48 myfile.pdf
しかし、daemontoolsを使用してOpenOfficeサーバーを起動すると(Oracleユーザーとしても)、ファイルは次のように作成されます。
-rw-r ----- 1ルートルート209569月2日15:28myfile.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"
/service/OpenOfficePROD/run
スクリプトで setuidgid
を使用して、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