Linux-Mint

如何以 root 身份執行自定義命令啟動應用程序

  • January 18, 2018

我想讓它每次啟動我的電腦時都會執行一個終端命令,但是我想執行的命令需要 root 權限。我在設置的啟動應用程序部分中輸入命令,在它之前使用 sudo,但由於它需要我的密碼,所以我認為它沒有執行。

將 cron 作業添加到 root 的 cron 表。Cron 作業是按計劃執行的任務。您可以安排作業在每次系統啟動時執行。

以root 身份輸入crontab -e以編輯 cron 表,該表只是計劃任務的列表。然後使用@reboot暱稱(而不是正常的計時語法)來創建一個在每次啟動時執行的作業:

@reboot your_command

您可以配置 sudo 以允許您在輸入密碼的情況下執行該命令。我通常建議不要這樣做,但是我再次建議不要自動執行 root 應用程序(除非它們是 setuid root 並且適當的權限/安全管理),嘿,這是你的機器。如果您需要在每次登錄時執行 sudo 命令,則此技術特別有用。(我同意,如果僅在啟動時需要啟動 cronjob 是有意義的)。

您可以通過以下兩種方式之一執行此操作:

  1. /etc/sudoers在 sudo 配置文件中添加一個適當的條目,該文件通過visudo以 root 身份執行(或通過 sudo)進行編輯。
  2. (推薦)/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

引用自:https://unix.stackexchange.com/questions/345570