Sensu, выполняющий скрипт sudo, требуется пароль

У меня есть обработчик sensu, который запускается на Linux-сервере конечной точки (Centos 6.6. Вот сценарий, который я использую:

#!/bin/bash --login
sudo -n -u deploy bash --login -c "cd /var/www/vhosts/sc/current; pwd; BUNDLE_GEMFILE=/var/www/vhosts/sc/current/Gemfile RAILS_ENV=production bundle exec pumactl -F /var/www/vhosts/sc/shared/config/puma.rb stop "
sudo -n -u deploy bash --login -c "cd /var/www/vhosts/sc/current; pwd; BUNDLE_GEMFILE=/var/www/vhosts/sc/current/Gemfile RAILS_ENV=production bundle exec pumactl -F /var/www/vhosts/sc/shared/config/puma.rb start "

Запуск этого сценария локально, поскольку другой пользователь работает нормально, и я могу получить puma для разумного перезапуска. Даже когда я даю sensu оболочку и выполняю сценарий на конечной точке.

Когда он запускается с сервера sensu, я получаю вывод:

{"timestamp":"2016-04-18T16:45:17.581962-0500","level":"info","message":"handler output","handler":{"type":"pipe","command":"/bin/sh /etc/sensu/handlers/puma_restart.sh","name":"puma_restart"},"output":["sudo: a password is required\n","sudo: a password is required\n"]}

Я подумал, что это может быть проблема с sudoers, поэтому вот мой setup:

Defaults:sensu !requiretty
Defaults:sensu secure_path = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
sensu ALL = NOPASSWD: /etc/sensu/handlers/puma_restart.sh

Я также пробовал установить sudo NOPASSWORD для всех команд, например:

sensu  ALL=(ALL)       NOPASSWD: ALL

Но я все еще получаю сообщение об ошибке при запуске скрипта.

Кто-нибудь знает, что я неправильно настроил? Если вам нужно более подробную информацию или контекст, пожалуйста, оставьте я знаю.

1
задан 19 April 2016 в 00:49
1 ответ

Эта первая конфигурация sudoers с sensu ALL = NOPASSWD: /etc/sensu/handlers/puma_restart.sh не будет делать то, что вы хотите. Это дает пользователю sensu права на вызов сценария оболочки puma_restart.sh с помощью sudo. Однако команды sudo находятся внутри этого сценария и вызывают bash для выполнения команд. Вам нужно разрешить пользователю sensu вызывать bash через sudo.

Эта вторая конфигурация sudoers sensu ALL = (ALL) NOPASSWD: ALL должна работать. Похоже, это может быть проблема с конфигурацией sudoers.

Несколько вещей, которые могут помочь вам продвинуться дальше:

  • Эти проверки выполняются на сервере sensu или на клиенте? Убедитесь, что вы помещаете конфигурацию sudoers в то место, где выполняется проверка.
  • Уберите вызовы sudo из скрипта. Удалите вызовы sudo внутри сценария и добавьте sudo к команде проверки sensu: sudo puma_restart.sh Эта первая конфигурация sudoers должна работать с этим подходом.
  • Отладьте конфигурацию sudoers.
    • Запустите sudo -l -U sensu на клиентском хосте sensu, чтобы узнать, какие права предоставляют конфигурации sudoers. Если для всех ваших команд включена функция без пароля, вы должны получить что-то, включая следующее. Если нет, это проблема конфигурации sudoers. Пользователь sensu может запускать на этом хосте следующие команды: (корень) NOPASSWD: ALL
0
ответ дан 4 December 2019 в 06:25

Теги

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