運行一個程序作爲非根我也與之密切相關的線程問題: Best practice to run Linux service as a different user從腳本
,但我需要解決工作中的「每一個」 Linux發行版。
我想從腳本作爲非root用戶運行程序。這樣,當init.d在啓動時以root身份啓動服務時,腳本將以我指定的非root用戶身份啓動進程。當然,解決方案不應該提示輸入密碼。
我認爲這是部署應用程序時正常/正確的過程。
我該怎麼做?
非常感謝
運行一個程序作爲非根我也與之密切相關的線程問題: Best practice to run Linux service as a different user從腳本
,但我需要解決工作中的「每一個」 Linux發行版。
我想從腳本作爲非root用戶運行程序。這樣,當init.d在啓動時以root身份啓動服務時,腳本將以我指定的非root用戶身份啓動進程。當然,解決方案不應該提示輸入密碼。
我認爲這是部署應用程序時正常/正確的過程。
我該怎麼做?
非常感謝
一個好方法是從您的實際程序中刪除權限。然後只需將該用戶作爲參數傳遞即可。裏面你可以用非常標準的方式處理它(setuid()
)
否則su -c 'your command' different_user
在任何linux上都能正常工作。 (只要different_user存在)
有兩種方式:
sudo
命令 - 你需要原來的用戶有這樣的條目添加到/etc/sudoers
的程序可以不用(NOPASSWD
)seteuid()
系統調用(如果你可以修改程序)如果你是root
,你也可以使用su
(詳情請參閱@ cnicutar的回答)