允許特定使用者執行 sudo 特定命令而無需輸入密碼

允許特定使用者執行 sudo 特定命令而無需輸入密碼

為了開發遊戲伺服器,我希望將git push目前的穩定版轉為私人 VPS。在 git-hook 內部receive應該會發生以下情況

sudo systemctl stop myserver
dotnet publish --configuration release
sudo systemctl start myserver

在 myserver.service 內部,編譯後的二進位檔案以有權存取 git 儲存庫的使用者身分執行。

我現在的想法是用 root 擁有且每個人都可讀的腳本替換第一行和最後一行,這樣 git-hookreceive就會變成

sudo stop-server.sh 
dotnet publish --configuration release
sudo start-server.sh

最後一步,我希望允許使用者權限 sudo 呼叫這兩個腳本,但僅此而已。此外,由於無法進行交互,因此在沒有 sudo 的情況下執行腳本時會詢問使用者密碼。

答案1

您可以將以下內容附加到/etc/sudoers(或在其中建立一個新文件/etc/sudoers.d/):

<username> ALL=(ALL) NOPASSWD: /path/to/script

這將使用戶運行sudo /path/to/script<username>無需密碼。請注意,如果惡意使用者可以修改腳本的內容,那麼這是不安全的,而且您最好嘗試完全避免需要 root 權限。

相關內容