如何以 root 身份執行自定義命令啟動應用程序
我想讓它每次啟動我的電腦時都會執行一個終端命令,但是我想執行的命令需要 root 權限。我在設置的啟動應用程序部分中輸入命令,在它之前使用 sudo,但由於它需要我的密碼,所以我認為它沒有執行。
將 cron 作業添加到 root 的 cron 表。Cron 作業是按計劃執行的任務。您可以安排作業在每次系統啟動時執行。
以root 身份輸入
crontab -e
以編輯 cron 表,該表只是計劃任務的列表。然後使用@reboot
暱稱(而不是正常的計時語法)來創建一個在每次啟動時執行的作業:@reboot your_command
您可以配置 sudo 以允許您在不輸入密碼的情況下執行該命令。我通常建議不要這樣做,但是我再次建議不要自動執行 root 應用程序(除非它們是 setuid root 並且適當的權限/安全管理),嘿,這是你的機器。如果您需要在每次登錄時執行 sudo 命令,則此技術特別有用。(我同意,如果僅在啟動時需要啟動 cronjob 是有意義的)。
您可以通過以下兩種方式之一執行此操作:
/etc/sudoers
在 sudo 配置文件中添加一個適當的條目,該文件通過visudo
以 root 身份執行(或通過 sudo)進行編輯。- (推薦)
/etc/sudoers.d
使用您的配置更改創建一個文件。該文件應包含底部/etc/sudoers
的指令,這將導致它讀取此目錄中的文件作為附加配置。#includedir /etc/sudoers.d
(如果沒有,此選項 #2 將不起作用。)無論哪種方式,現有的
/etc/sudoers
都有對配置語法的解釋,但它有點長,你不需要太擔心任何現有的配置。(還有一個手冊頁,man 5 sudoers
。)您需要做的是編寫使用者規範行,允許您在不輸入密碼的情況下執行特定命令。
正如文件註釋所指出的,使用者規範具有以下基本格式:
## Syntax: ## ## user MACHINE=COMMANDS ## ## The COMMANDS section may have other options added to it.
還有一些特定類型配置的語法範例。為了完成您所需要的,使用者規範是:
username ALL = NOPASSWD: /path/to/command
(用適當的值替換“使用者名”和“/path/to/command”;“ALL”和“NOPASSWD”是文字。)
請注意,無論是在 sudoers 配置中還是在自動啟動它時,都應該始終使用命令的完整路徑。這有助於確保程序執行是您所期望的,而不是由於劫持而取代它的其他(潛在惡意)程序。該建議也適用於 root crontab 條目或任何其他自動授予 root 權限的方法。
$PATH