Centos 7. Por lo general, cuando me gustaría ejecutar un comando sudo como usuario no root, abro visudo y agrego esta línea en el lugar correcto:
%<userGroup> ALL= NOPASSWD: <command>
cuando quiero reiniciar un servicio, en mi caso actual, mongodb.service con el usuario jenkins, me gustaría hacerlo así:
%jenkins ALL= NOPASSWD: /usr/bin/systemctl restart mongod.service
Hasta ahora, todo bien. Luego cambio al usuario jenkins así:
sudo su -s /bin/bash jenkins
Luego pruebo el comando y todo funciona bien. También hago lo mismo con los comandos de parada/estado/inicio y también los pruebo. Eso es todo lo que me gustaría hacer con ellos. El problema es; cuando ejecuto las pruebas con jenkins, llama a estos comandos y no hace nada. Este mongodb es sólo para pruebas, por lo que está bien que sólo se ejecute cuando lo necesitemos. Entonces lo que me gustaría saber es; ¿Cómo hacer que funcione? ¿O cómo poder reiniciar/detener/iniciar el servicio con un usuario del servicio?
Respuesta1
Por si acaso alguien más experimenta el mismo tipo de problema: no recibí ningún mensaje de error para estas cosas, así que decidí poner todo en un archivo de secuencia de comandos y luego darle permiso para ejecutar el archivo de secuencia de comandos con derechos sudo. En ese caso recibí este mensaje de error: "sudo: lo siento, debes tener un tty para ejecutar sudo". Con eso pude localizar el problema con esta solución: https://unix.stackexchange.com/questions/122616/por qué-necesito-a-tty-to-run-sudo-if-i-can-sudo-sin-contraseña