Ubuntu

從 rc.local 以使用者而不是 root 執行腳本

  • August 11, 2015

我想在每次伺服器啟動時執行一個腳本。問題是我需要成為某個使用者才能執行腳本,如果我嘗試以 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 的服務不是正確的做法。您想在啟動時使用您的分發工具啟用該服務,例如chkconfigupdate-rc.d。您也不希望 /etc/init.d 中的作業不應該以root. 作業本身可以隨意分叉到另一個使用者帳戶,但應該由 root 呼叫。

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