Ubuntu
從 rc.local 以使用者而不是 root 執行腳本
我想在每次伺服器啟動時執行一個腳本。問題是我需要成為某個使用者才能執行腳本,如果我嘗試以 root 身份執行它,它無法找到某些包(例如 ruby)。
我嘗試更改為 xxx user01。
sudo su user01 /etc/init.d/script start
然而,這不起作用。
在腳本中執行
sudo su user01
並不意味著將以下命令發送到生成的 shell。事實上,這可能意味著作為 user01 生成了一個新的 shell,它永遠不會退出!兩件事情:
- 您可以通過將
-c 'command...'
參數傳遞給 su 以其他使用者身份執行命令,例如su user01 -c '/etc/init.d/script start'
.- 從 rc.local 啟動使用 /etc/init.d 的服務不是正確的做法。您想在啟動時使用您的分發工具啟用該服務,例如
chkconfig
或update-rc.d
。您也不希望 /etc/init.d 中的作業不應該以root
. 作業本身可以隨意分叉到另一個使用者帳戶,但應該由 root 呼叫。