web-dev-qa-db-ja.com

OpenOfficeをDaemontoolsサービスとして実行してもユーザーをピックアップしない

私の問題は、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"
2
TrojanName

/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
2
HBruijn