问题 :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
更多信息。