Я настраиваю Nagios на некоторых из моих серверов Linux и столкнулся с небольшой проблемой. Для check_ide_smart
запуска плагина требуется root-доступ к системе. Чтобы запустить его, я использую check_by_ssh
плагин для входа в ssh в учетную запись nagios на удаленном хосте, а затем запускаю check_ide_smart
с помощью sudo.
Первоначально я добавил следующие строки, /etc/sudoers
чтобы позволить программе работать:
nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart
Хотя это работало очень хорошо при локальном запуске, у меня возникла проблема, когда он запускался из Nagios: не появлялся TTY, что мешало плагину работать.
Я покопался в man-странице для sudo и нашел опцию -s, которая порождает оболочку и запускает там программу. Когда я попытался использовать sudo -s
, у меня возникли проблемы с разрешениями, так как -s, по-видимому, меняет команду на /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart
, что не разрешено файлом sudoers. Я попытался изменить файл sudoers для использования этой команды вместо этого, но это не сработало, и использование кавычек является синтаксической ошибкой.
В конце концов я получил его на работу, используя следующую строку /etc/sudoers
:
nagios ALL=/bin/bash
Мне кажется, что это неправильно, так как я разрешаю пользователю nagios создавать корневую оболочку, с которой он может делать все что угодно.
На данный момент, я подумал, что, возможно, поместив команду в сценарий оболочки, для которой пользователь nagios имеет права только для чтения, сработает, поэтому я создал сценарий оболочки:
#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@
К сожалению, я никогда не мог заставить переданные параметры ( Редактировать: мне нужно было процитировать $@
) корректно работать с плагином, поэтому я не знаю, будет ли это работать. $@
для его работы. Спасибо @derobert и @pjz. Я до сих пор не знаю, сработает ли это, поскольку я заставил его работать, используя решение @Mike Arthur.
Есть ли способ, которым я могу получить sudo -s
работу, не допуская порождения корневой оболочки?
Ответ:
Добавлена следующая строка /etc/sudoers
:
nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart *
Обратите внимание на конечную звездочку; без этого это не работает. Спасибо @Mike Arthur за ответ.