為了開發遊戲伺服器,我希望將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 權限。