从远程主机调用时,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 

您必须通过禁用此命令的requiretty来启用sudo中的无terminal访问。 默认情况下需要tty( 交互式使用),否则这可能有助于升级安全漏洞。 所以,如果你没有问题,换成:

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

有:

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

Cmnd_Alias不是强制性的,但build议使用,如果您需要额外的参数,则成为强制性的。 这将只允许由nagios运行的rm命令。

检查man 5 sudoers更多的信息。