2011-08-19 30 views
1

運行一個程序作爲非根我也與之密切相關的線程問題: Best practice to run Linux service as a different user從腳本

,但我需要解決工作中的「每一個」 Linux發行版。

我想從腳本作爲非root用戶運行程序。這樣,當init.d在啓動時以root身份啓動服務時,腳本將以我指定的非root用戶身份啓動進程。當然,解決方案不應該提示輸入密碼。

我認爲這是部署應用程序時正常/正確的過程。

我該怎麼做?

非常感謝

回答

3

一個好方法是從您的實際程序中刪除權限。然後只需將該用戶作爲參數傳遞即可。裏面你可以用非常標準的方式處理它(setuid()

否則su -c 'your command' different_user在任何linux上都能正常工作。 (只要different_user存在)

1

有兩種方式:

  1. sudo命令 - 你需要原來的用戶有這樣的條目添加到/etc/sudoers程序可以不用(NOPASSWD
  2. 運行
  3. seteuid()系統調用(如果你可以修改程序)

如果你是root,你也可以使用su(詳情請參閱@ cnicutar的回答)