Проблема: Скрипт очистки файла 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
корень @ nagislave: /etc/sudoers.d# cat nagios-test
nagios ALL=(ALL) NOPASSWD:/bin/rm
корень @ 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
Вы должны включить доступ без терминала в sudo, отключив requiretty
для этой команды. tty (т.е. интерактивное использование) требуется по умолчанию, поскольку в противном случае это может способствовать увеличению брешей в безопасности. Так что, если вас это устраивает, замените:
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
для получения дополнительной информации.