
У меня есть несколько правил sudo, настроенных для многих (виртуальных) серверов (в основном Debian), которые будут использоваться скриптами Zabbix:
zabbix ALL=NOPASSWD: /etc/init.d/exim4 restart
Файл конфигурации zabbix-agent и sudo ( /etc/sudoers.d/zabbix-agent
) распространяется через ansible и является одинаковым для всех серверов.
Однако на некоторых серверах sudo запрашивает пароль. На других — нет. Это одинаково, запускаю ли я команду с помощью zabbix или локально:
# sudo -u zabbix sudo /etc/init.d/exim4 restart
Иногда это работает, а иногда запрашивает пароль.
Я изучил этот вопрос, и очевидный ответ, что для пользователя zabbix в конфигурации sudo есть другое правило, не соответствует действительности.
Какие еще факторы могут привести к тому, что система запросит пароль?
решение1
Итак, было два источника ошибок:
- Каталог
sudoers.d
не был включен в/etc/sudoers
. В большинстве современных систем это значение по умолчанию, поэтому достаточно просто перетащить файл, но были некоторые старые системы, которые изначально были установлены с Debian Lenny и сохранили старый файл sudoers. - Никакой exim не был установлен, поэтому
/etc/init.d/exim4
не существовал. Теперь это тоже ошибка пользователя в некотором роде, но это такжеочень паршивый отчет об ошибкахдля sudo. Я понимаю, что сообщение о попытке выполнить некоторые файлы может привести к утечке информации (однако в конфигурации sudo есть явное правило для этого исполняемого файла, поэтому я не совсем уверен, что это веская причина), но система сообщает об ошибке, если я ввожу правильный пароль.