我想在啟動時以 root 身份啟動程式,并將以下行之一添加到 rc.local:
sudo /path/my_prog
sudo sh -c "/path/my_prog"
su -c "/path/my_prog"
這三行有什么區別,哪一行是正確的?
uj5u.com熱心網友回復:
你不需要它們中的任何一個;rc.local以root特權運行。正確的答案是簡單地運行你的命令。
/path/my_prog
suroot如果您是并且想要切換到不同的帳戶,這是有道理的。
sudo如果您在非特權帳戶上運行,并且已被授予切換到另一個帳戶的權限(通常但并非總是如此root),通常需要能夠以互動方式提供您的密碼(盡管可以關閉)如果你真的必須這樣做;顯然,在你搞砸與安全相關的東西之前,你需要了解你在做什么)。
sh -c "command"只是一種低效的運行方式command。當您實際需要 shell 功能(如通配符擴展、重定向等)或 shell 內置函式(如cd.
理想情況下,您可能希望確保my_prog在專用的非特權系統帳戶上運行;那么,語法將是
su otheraccount -c /path/my_prog
顯然您需要創建otheraccount并確保它具有執行此特定任務所需的權限。
su可以選擇讓您在帳戶名之前添加一個單獨的破折號以使其運行登錄會話;但是對于服務帳戶,這可能沒有意義。
uj5u.com熱心網友回復:
sudo /path/my_prog將以/path/my_progsudo 權限執行。sudo sh -c "/path/my_prog"將使用 sudo 權限使用sh執行/path/my_prog(由 flag 指定-c) 。su -c "/path/my_prog"將使用 sudo 權限使用您當前的 shell執行/path/my_prog(由 flag 指定)。-c
正確的使用取決于您的用例,因此實際上取決于您。恕我直言,sudo foo并且su -c foo基本相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/418021.html
標籤:
