问题: tmp文件清除脚本能够在nagios客户机上成功执行。 当从nagios主机调用相同的脚本时,该脚本将被执行,但会跳过脚本中的sudo行。 有人能帮助我吗?
root @ nagislave:/ tmp#grep -i usedspace /etc/nagios/nrpe.cfg | grep -v'#'
command[usedspace_bash]=/usr/local/nagios/libexec/tmp_space.sh
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更多的信息。