我正在尝试调试使用 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
-须藤
-nagios
-xinetd
-其他
我已经解决了 sudo 的问题并完成了标准的事情(注释掉 'requiretty',设置路径,使用 'NOPASSWD' 添加 nagios 用户)。还没发现问题。
其他命令通过 NRPE('check_user' 等)运行良好。
注意:这是一个已发布的、已建立的 nagios 插件。我在这个系统上做了一些错误,导致它无法正常工作。
建议?
问题的答案:
1) 如果我以“nagios”登录,我可以运行该应用程序。
2)使用'visudo'我有这个条目:'nagios ALL =(ALL)NOPASSWD:ALL'
- 是的,这是一个安全漏洞。当我让这个东西工作时,我会收紧它。
3)/usr/bin/sudo 的权限是---s--x--x。 2 root root 215144 May 9 23:59/usr/bin/sudo
问题似乎出在 SELinux 上。当我“回显 0 >/selinux/enforce”时,应用程序会正常运行。现在要弄清楚如何使用它而不是绕过它。 @Josh - 将此作为答案发布,我会很乐意接受!
请您参考如下方法:
这听起来像是 SELinux 的问题。如果从 xinetd 执行 sudo 得到一个权限被拒绝的错误并且在 xinetd 之外执行它是成功的,那么看起来像 SELinux 的东西可能正在执行一个拒绝它的策略。
