将 OpenOffice 作为 Daemontools 服务运行,但未获取用户

将 OpenOffice 作为 Daemontools 服务运行,但未获取用户

我的问题是,当使用 Daemontools 启动时,OpenOffice(以服务器模式运行)创建的文件归 root 所有(并属于 root 组)。当我手动启动 Daemontools“运行”脚本时,OpenOffice 会正确创建具有我想要的权限的文件(在本例中即“oinstall”组)。

我有一个名为“oracle”的 unix 用户,他是“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 服务器时,通过以 oracle 用户身份运行“运行”脚本,我得到了具有所需权限的文件,例如

-rw-r----- 1 oracle oinstall 20956 9 月 2 日 15:48 myfile.pdf

但是当我使用 daemontools 启动 OpenOffice 服务器(即使以 Oracle 用户身份)时,文件会像这样创建:

-rw-r----- 1 root root 20956 9月 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"

答案1

你可能想要使用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

相关内容