
我正在 Ubuntu 15.04 伺服器上運行一個名為 HomeSeer 的家庭自動化軟體包。我將其配置為使用服務帳戶(稱為“_homeseer”)運行,並且我已將應用程式目錄更改為 _homeseer:_homeseer。
為了安裝此軟體包的更新,我下載了一個 tar.gz 文件,然後執行供應商提供的「update.sh」腳本。該腳本提取壓縮文件,該文件碰巧也會覆蓋自身(update.sh)...所以我想我不能只更改該腳本,除非我將其複製到某個單獨的資料夾中。
作為 update.sh 的一部分,有一行呼叫「sudo update_extra.sh」。由於我將 update.sh 作為服務帳戶運行,因此 sudo 行會提示輸入服務帳戶的密碼...我不記得了(我也不認為我想記住)。
我不想在沒有密碼的情況下授予該帳戶完整的 sudo 權限,因為這將帶來重大的安全風險(即該應用程式運行 Web 伺服器)。我還對授予它以 root 身份運行 update_extra.sh 文件的完整 sudo 權限持謹慎態度,因為該文件可以由同一服務帳戶更新。
我的問題:
是否可以設定 sudo(即 visudo),以便如果 _homeseer 帳戶嘗試使用 sudo,它會提示輸入我的個人帳戶的密碼,並使用我擁有的 sudo 權限運行?如果可以的話,我寧願不設定 root 密碼……但初步看來,如果我想走這條路,我可能沒有太多選擇。
或者我需要修改 update.sh 腳本,配置群組權限,以便我可以自行應用更新,然後 chown 到服務帳戶?
答案1
你可以讓 sudo 處理這個問題。
如果將其新增至 sudoers 檔案:
_homeseer hostname = (_homeseer) NOPASSWD: /path/to/update.sh
- 主機名稱
hostname
=您機器上的輸出。
需要注意的一件事是,沒有 100% 安全的方法來處理 update.sh,因為它可能包含任何命令,並且我假設它會隨著時間的推移而改變,這意味著您不能使用 HASH 函數來確保腳本與之前的相同。