Sensu executando script sudo uma senha é necessária

1

Eu tenho um manipulador sensu que é acionado em uma caixa Linux de endpoint (Centos 6.6. Aqui está o script que estou usando:

#!/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 "

A execução deste script localmente, como outro usuário, funciona bem e posso fazer com que o puma seja reiniciado. Mesmo quando eu dou um shell ao sensu e executo o script no endpoint.

Quando é acionado pelo servidor sensu, recebo a saída de:

{"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"]}

Eu pensei que isso poderia ser um problema com os sudoers, então aqui está minha configuração:

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

Eu também tentei configurar o sudo NOPASSWORD para todos os comandos como:

sensu  ALL=(ALL)       NOPASSWD: ALL

Mas ainda recebo o erro quando o script é acionado.

Alguém tem uma ideia do que eu configurei errado? Se você precisar de mais detalhes ou contexto, por favor me avise.

    
por nulltek 18.04.2016 / 23:49

1 resposta

0

Essa configuração dos primeiros sudoers com sensu ALL = NOPASSWD: /etc/sensu/handlers/puma_restart.sh não fará o que você deseja. Isso atribui direitos para o usuário sensu invocar o script% wrapperpuma_restart.sh com sudo. Os comandos sudo estão dentro desse script e chamando bash para executar comandos. Você precisa permitir que o usuário sensu invoque o bash via sudo.

Esse segundo sudoers config sensu ALL=(ALL) NOPASSWD: ALL deve funcionar. Parece que isso pode ser um problema com a configuração dos sudoers.

Algumas coisas que podem levar você mais longe:

  • Essas verificações estão sendo executadas no servidor sensu ou em um cliente? Certifique-se de colocar a configuração do sudoers no local em que a verificação é executada.
  • Mova as chamadas sudo para fora do script. Remova as chamadas sudo de dentro do script e adicione sudo ao comando sensu check: sudo puma_restart.sh Essa configuração dos primeiros sudoers deve funcionar com essa abordagem.
  • Depure a configuração dos sudoers.
    • Execute sudo -l -U sensu no host do cliente sensu para ver quais direitos as configurações dos sudoers fornecem. Com o passwordless ativado para todos os seus comandos, você deve receber algo, incluindo o seguinte. Se não, é um problema de configuração do sudoers. %código%
por 20.04.2016 / 00:15