从远程主机调用时,NRPE 命令会跳过 sudo 命令

从远程主机调用时,NRPE 命令会跳过 sudo 命令

问题 :tmp 文件清除脚本能够在 nagios 客户端计算机上成功执行。当从 nagios 主服务器调用相同的脚本时,脚本会执行,但它会跳过脚本中的 sudo 行。有人能帮我解决这个问题吗?

nrpe.cfg:

root@nagislave:/tmp# grep -i usedspace /etc/nagios/nrpe.cfg | grep -v'#'

command[usedspace_bash]=/usr/local/nagios/libexec/tmp_space.sh

Sudo 权限:

root@nagislave:/etc/sudoers.d# cat nagios-test

nagios ALL=(ALL) NOPASSWD:/bin/rm

脚本:

root@nagislave:/etc/sudoers.d# cat /usr/local/nagios/libexec/tmp_space.sh

#!/bin/sh
used_space=`df -h /tmp | grep -v Filesystem | awk '{print $5}' | sed 's/%//g'`

if [ $used_space -le 10 ]
then
   echo "tmp FS OK - $used_space% of disk space used."
elif [ $used_space -gt 11 ]
then
   sudo rm -rf /tmp/*
   d=`df -h /tmp | grep -v Filesystem | awk '{print $5}' | sed 's/%//g'`
   echo "OK - House keeping done on /tmp FS and now $d% of disk space used"
else
   echo "UNKNOWN"
fi

答案1

您必须通过禁用requiretty此命令来启用 sudo 中的无终端访问。tty(IE默认情况下,必须使用交互式使用,否则可能会导致安全漏洞升级。因此,如果您对此没有异议,请将以下内容替换为:

nagios ALL=(ALL) NOPASSWD:/bin/rm

和:

Cmnd_Alias        NAGIOSRM = /bin/rm
nagios            ALL=(ALL) NOPASSWD: NAGIOSRM
Defaults!NAGIOSRM !requiretty

Cmnd_Alias 不是必需的,但建议使用,如果您需要额外的参数,则必须使用。这将仅允许 nagios 运行 rm 命令。

查看man 5 sudoers更多信息。

相关内容