Permissions

將 OpenOffice 作為 Daemontools 服務執行,但不會獲取使用者

  • September 2, 2016

我的問題是,當使用 Daemontools 啟動時,由 OpenOffice(在伺服器模式下執行)創建的文件歸 root 擁有(並且在 root 組中)。當我手動啟動 Daemontools ‘run’ 腳本時,OpenOffice 會正確創建具有我想要的權限的文件(即本例中的 ‘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 使用者身份執行“執行”腳本,我會生成具有所需權限的文件,例如

-rw-r—– 1 oracle oinstall 20956 Sep 2 15:48 myfile.pdf

但是當我使用 daemontools 啟動 OpenOffice 伺服器(即使作為 Oracle 使用者)時,文件會像這樣創建:

-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"

您可能希望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

引用自:https://serverfault.com/questions/800752