运行 nagios 插件时权限被拒绝

运行 nagios 插件时权限被拒绝

我刚刚编写了一个简单的 bash 脚本来检查文件系统是否正在写入和删除文件,但是当我将其放入 Nagios 时,它从未按预期运行。

root@debian:~# cat /usr/lib/nagios/plugins/check_filesys.sh
#!/bin/bash
# Script que checa se file system consegue escrever/ler arquivos
if  touch teste.txt && rm teste.txt; then
    echo OK - Teste OK!
    exit 0
else
    echo CRITICAL - Teste de escrita/leitura falhou!
    exit 2
fi


root@debian:~# ls -l /usr/lib/nagios/plugins/check_filesys.sh
-rwxrwxrwx 1 root root 217 Feb  5 10:40 /usr/lib/nagios/plugins/check_filesys.sh

我还找到了一个调试脚本来查看问题是什么,这就是输出:

 2016-1-5 13:31:16 ------ debugging
 cmd=[/usr/lib/nagios/plugins/check_filesys.sh]
 output=[touch: cannot touch `teste.txt': Permission denied
 CRITICAL - Teste de escrita/leitura falhou!

我尝试将 nagios 用户插入 /etc/sudoers 文件中,如下所示:

nagios ALL:NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_filesys.sh *

但问题仍然存在。OBS:我正在本地主机检查。

答案1

您需要使用 touch/rm 的完整路径,因为您的脚本正尝试在 中运行/,而 Nagios 没有 的写入权限/

~/test.txt(如果 $HOME 设置为合理的值,您可能就可以使用它。)

你可以自己验证一下:

# pgrep nagios
556
# ls -ls /proc/556/cwd
0 lrwxrwxrwx 1 root root 0 Feb  5 11:10 /proc/556/cwd -> /

这表明 Nagios 进程正在运行,并且cwd设置为/

答案2

您的 nagios 插件将以您在 /etc/nagios/nrpe.cfg 中定义的“nrpe_user”身份运行。这可能是“用户 nagios 或用户 nrpe”。

如果您将脚本更新为 touch '/tmp/teste.txt'(换句话说,touch 具有开放权限的位置中的文件)它应该可以工作。

答案3

放入nagios文件sudoers不会有帮助如果你实际上没有调用 sudo。 尝试

nagios ALL=ALL NOPASSWD: /usr/lib/nagios/plugins/check_filesys.sh

sudoers让 nagios 调用

sudo /usr/lib/nagios/plugins/check_filesys.sh

相关内容