Permissions
將 OpenOffice 作為 Daemontools 服務執行,但不會獲取使用者
我的問題是,當使用 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