Centos 7. Normalmente, quando desejo executar um comando sudo como um usuário não root, abro o visudo e adiciono esta linha no lugar certo:
%<userGroup> ALL= NOPASSWD: <command>
quando eu quiser reiniciar um serviço - no meu caso atual - mongodb.service com o usuário jenkins eu gostaria de fazer assim:
%jenkins ALL= NOPASSWD: /usr/bin/systemctl restart mongod.service
Até agora tudo bem. Então eu mudo para o usuário jenkins assim:
sudo su -s /bin/bash jenkins
Então eu testo o comando e tudo funciona bem. Eu faço o mesmo com os comandos stop/status/start e os testo também. Isso é tudo o que eu gostaria de fazer com eles. O problema é; quando executo os testes com o jenkins, ele chama esses comandos e não faz nada. Este mongodb é apenas para teste, então está tudo bem que ele só seja executado quando precisarmos. Então o que eu gostaria de saber é; Como fazer dar certo? Ou como reiniciar/parar/iniciar o serviço com um usuário do serviço?
Responder1
Apenas para o caso de outra pessoa ter o mesmo tipo de problema: não recebi nenhuma mensagem de erro para essas coisas, então decidi colocar tudo em um arquivo de script e então dar permissão para executar o arquivo de script com direitos sudo. Nesse caso, recebi esta mensagem de erro: "sudo: desculpe, você deve ter um tty para executar o sudo" Usando isso, eu poderia descobrir o problema com esta solução: https://unix.stackexchange.com/questions/122616/why-do-i-need-a-tty-to-run-sudo-if-i-can-sudo-without-a-password