我正在为 munin 编写一个插件,用于监控我们 Ubuntu Linux 服务器(位于 Amazon EC2 上)上的某些内容。该插件需要/usr/sbin/rabbitmqctl
通过运行程序sudo
。
我有以下行/etc/sudoers
:
munin ALL = NOPASSWD: /usr/sbin/rabbitmqctl list_queues
如您所见,munin
用户(即运行脚本的用户)可以/usr/sbin/rabbitmqctl list_queues
通过 sudo 执行命令,无需密码。我已通过sudo -u munin -s
运行它确认此方法有效。
但是在 munin 日志(/var/log/munin/munin-node.log
)中,我得到了很多这样的插件输出:
2013/06/28-11:35:26 [28107] sudo: no tty present and no askpass program specified
并且图表中没有数据。
在我的文件末尾/etc/sudoers
,有这样一段通常被建议作为解决方案的内容:
Defaults !requiretty
但是它并没有解决问题。常见的建议“取消注释 /etc/sudoers 中的该行”也不起作用,因为该文件中没有任何内容。
有没有办法允许我的 munin 插件通过 调用某些东西sudo
?
更新 №1:munin 插件由服务器上的 munin-node 执行,以 munin 用户身份运行,我无法将所有内容更改为以 root 身份运行所有内容。
答案1
这不是对您的特定查询的答案,而是对您的特定问题的解决方案。
不要使用sudo
,而是像其他 munin 插件那样,覆盖运行特定插件的用户root
。
更多信息这里。
你可以添加这样的部分,
[<plugin name>]
user <user>
group <group>
到目录munin-node
中plugin-conf.d
(通常在/etc/munin
)。
几个 munin 插件已经以 root 身份运行,所以如果您准备运行 munin,这已经是标准做法。