我为许多(虚拟)服务器(主要是 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 配置中对该可执行文件有明确的规则,因此我不确定这是一个有效的原因),但系统确实如此如果我提供正确的密码,则报告错误。