2

我正在尝试调试使用 NRPE 的 nagios 插件(check_aacraid.py)。有问题的系统是一个新设置的 CentOS 6.2 文件服务器。

似乎给我带来麻烦的命令是:

for line in Popen(["/usr/bin/sudo", "/usr/bin/arcconf", "GETCONFIG", "1", "LD"],
                  stdin=PIPE, stdout=PIPE, close_fds=True).stdout:

如果我以“nagios”用户身份运行脚本,它工作正常。如果从 NRPE/XINETD 调用它会失败(NRPE 报告“无法读取输出” - usu 表示错误)。

我用 strace 观察了 xinetd 的输出,发现了这个:

7706  execve("/usr/bin/sudo", ["/usr/bin/sudo", "/usr/bin/arcconf", "GETCONFIG", "1", "AD"], [/* 15 vars */]) = -1 EACCES (Permission denied)

我试图弄清楚它是否有问题:
-python
-sudo
-nagios
-xinetd
-other

我已经解决了 sudo 的问题并完成了 std 的事情(注释掉 'requiretty',设置路径,使用 'NOPASSWD' 添加 nagios 用户)。还没发现问题。

其他命令通过 NRPE('check_user' 等)运行良好。

注意:这是一个已发布的、已建立的 nagios 插件。我在这个系统上做错了什么,导致它无法正常工作。

建议?

问题解答:
1) 如果我以“nagios”身份登录,我可以运行该应用程序。
2) 使用 'visudo' 我有这个条目:'nagios ALL=(ALL) NOPASSWD:ALL'
- 是的,它是一个安全漏洞。当我得到这个东西时,我会收紧它。
3) /usr/bin/sudo 的权限是---s--x--x。2 根 215144 5 月 9 日 23:59 /usr/bin/sudo

看来 SELinux 是问题所在。当我 'echo 0 > /selinux/enforce' 时,应用程序运行正常。现在要弄清楚如何使用它而不是绕过它。@Josh - 将此作为答案发布,我很乐意接受!

4

1 回答 1

1

听起来 SELinux 是个问题。如果从 xinetd 执行 sudo 得到一个权限被拒绝错误并且在 xinetd 之外执行它成功,那么似乎 SELinux 之类的东西可能正在执行拒绝它的策略。

于 2012-05-11T15:00:47.220 回答