将OpenOffice作为Daemontools服务运行,而不是拾取用户

我的问题是,当使用Daemontools启动时,由OpenOffice(以服务器模式运行)创build的文件由root(和根组)拥有。 当我手动启动Daemontools的“运行”脚本时,OpenOffice正确地创build了具有我想要的权限的文件(即本例中的“oinstall”组)。

我有一个名为“oracle”的unix用户,他是组“oinstall”的成员。 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用户)时,文件也是这样创build的:

-rw -r —– 1 root root 20956 Sep 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" 

您可能想要在/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