Запуск bash-скрипта при сбое пользователя nrpe

435
Sina

Я создал скрипт bash, который должен выполнять поиск во всех папках журналов на нескольких серверах и сжимать все файлы журналов на компьютерах, основанных на rpm (серверы RHEL и Centos 6 & 7). Предполагается, что сценарий создаст файл блокировки, чтобы предотвратить запуск нескольких его экземпляров, и весь сценарий, который широко использует команды find, tar и rm, должен запускаться пользователем nrpe с полномочиями sudo, когда запускается обработчик событий Nagios.

Я дал разрешения sudo для nrpe, чтобы запустить эту команду, но я заметил, что при попытке запустить скрипт, разрешения запрещены:

sudo -u nrpe /share/username/run/fixstorage.sh touch: cannot touch `/var/run/fixstorage.lockfile': Permission denied find: `/var/log/sssd': Permission denied find: `/var/log/salt': Permission denied find: `/var/log/httpd': Permission denied find: `/var/log/audit': Permission denied 

Но затем сценарий продолжает работать, но без вывода. И хранилище не фиксируется. Как я могу заставить nrpe правильно запустить весь скрипт? Права доступа к сценарию:

-rwxrwxr-x. 1 username username 5516 Jan 3 23:36 /share/username/run/fixstorage.sh 

Это в домашней папке пользователя, которая смонтирована по NFS.

0
Имеет ли пользователь nrpe права на запись в первый файл и права на чтение в каталогах? Я сомневаюсь, что он имеет. По сути, вы просто запустили скрипт как пользователь nrpe, не предоставляя ему никаких дополнительных привилегий. ojs 7 лет назад 0
Пользователь nrpe имеет право запускать скрипт от имени пользователя root. Разве этого не должно быть достаточно? Sina 7 лет назад 0
Этого должно быть достаточно, да, просто чтобы проверить, можете ли вы добавить к вопросу вывод `ls -l / share / username / run / fixstorage.sh`. ojs 7 лет назад 0
Готово. Интересно, почему люди сбрасывают очки с моего вопроса. Это слишком глупо или что-то? Это очень мелкое поведение. Если бы я знал, что я делаю, я бы не спросил. Sina 7 лет назад 0
Из того, что я вижу здесь, скрипт не запускается с привилегиями root, если вы действительно хотите запустить его с привилегиями root, используйте бит suid в файле скрипта. ojs 7 лет назад 0
Ну, suid может быть проблемой безопасности. Почему бы не запустить скрипт от имени root напрямую? Просто используйте `sudo / share / username / run / fixstorage.sh`? ojs 7 лет назад 0
Именно так я запускаю скрипт в nrpe: `command [fix_storage] = / usr / bin / sudo / share / username / run / fixstorage.sh`, но теперь я вижу ошибку: sudo находится в / bin, а не / usr / бин на rhel7. Я мог бы просто попытаться установить бит suid. Спасибо! Sina 7 лет назад 0

0 ответов на вопрос

Похожие вопросы