對於 apt-get update
和 apt-get upgrade
為我的 ssh 使用者提供無密碼 sudo 是否安全?
我的個人伺服器上有一個 SSH 標準使用者帳戶,它具有 sudo 訪問權限(通過其密碼)。
我使用公鑰 ssh,因此無需輸入帳戶密碼即可登錄。允許此使用者無密碼 sudo 訪問僅
apt-get update
執行andapt-get upgrade
(或)命令對我來說是否安全apt-get dist-upgrade
?我是從安全的角度來詢問,而不是從“損壞/錯誤更新”的角度來詢問。我是唯一一個登錄的人,如果我通過更新破壞了某些東西,我總是可以 sudo(使用密碼)來修復問題。要點是能夠在我的伺服器上執行及時更新,而無需輸入密碼。但是,如果有人確實可以訪問此帳戶,我不希望他們能夠安裝任何東西,而且我不知道這兩個命令是否還有其他問題。
這是我
sudoers
文件中的確切行:
stephen ALL=(root) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade, /usr/bin/apt-get dist-upgrade
允許不太受信任的使用者執行
apt-get update
是可以的。他們能做的最糟糕的事情是消耗大量頻寬並填滿一些磁碟空間,而且他們還有很多其他方法可以做到這一點,除非你採取了嚴格的措施來防止這種情況發生。允許使用者執行
apt-get upgrade
可能會授予他們 root 訪問權限。一些包查詢使用者並可能允許 shell 轉義;例如,有權訪問apt-get upgrade
(或任何dpkg -i
呼叫)正在執行的終端的使用者可能會收到提示,如果配置文件已更新,該怎麼做,其中一個選項是執行 shell 來檢查情況。您需要進一步限制命令:
#!/bin/sh set -ex exec </dev/null >"/var/log/automatic-apt-upgrade-$(date +%Y%m%d-%H%M%S)-$SUDO_USER.log" 2>&1 apt-get --assume-no upgrade
這不應該讓使用者成為 root 使用者,因為他們無法與包管理器互動。由於升級有時會破壞系統,並且只有這些權限的使用者無法修復任何內容,因此只能在穩定版本中完成,只有安全更新待定。如果是核心更新,讓具有完全 root 訪問權限的使用者決定何時觸發重啟。
順便說一句,使用者將無法注入包內容——為此,他們需要控制分發包的伺服器,並且如果包已簽名,則除了伺服器對包進行簽名(這是所有官方消息來源的情況)。對於在升級時控制機器的攻擊向量來說,這無關緊要。
說了這麼多……如果你想要的話,請使用unattended-upgrades 。