
我為許多(虛擬)伺服器(主要是 debian)設定了一些 sudo 規則,供 zabbix 腳本使用:
zabbix ALL=NOPASSWD: /etc/init.d/exim4 restart
zabbix-agent 和 sudo 設定檔 ( /etc/sudoers.d/zabbix-agent
) 透過 ansible 分發,並且對於所有伺服器都是相同的。
但是,在某些伺服器上,sudo 要求輸入密碼。對其他人來說則不然。無論我使用 zabbix 還是本地運行命令都是一樣的:
# sudo -u zabbix sudo /etc/init.d/exim4 restart
有時,它可以工作,有時它會要求輸入密碼。
我調查了一下,明顯的答案是 sudo 配置中的 zabbix 用戶有不同的規則,但這是不正確的。
還有哪些因素可能導致系統要求輸入密碼?
答案1
好的,有兩個錯誤來源:
- 該
sudoers.d
目錄未包含在/etc/sudoers
.在大多數現代系統上,這是預設設置,因此只需刪除該檔案即可,但有一些舊系統最初是隨 Debian Lenny 安裝的,並保留了舊的 sudoers 檔案。 - 沒有安裝 exim,所以
/etc/init.d/exim4
它不存在。現在這在某種程度上也是一個用戶錯誤,但它也是非常蹩腳的錯誤報告對於須藤。我知道有關嘗試執行某些文件的報告可能會導致資訊洩漏(但是,sudo 配置中對該可執行文件有明確的規則,因此我不確定這是一個有效的原因),但係統確實如果我提供正確的密碼,則報告錯誤。