Ejecutar un comando con SUDO sin contraseña

2018-01-25

Con la nueva versión de Raspbian Stretch, y como medida de seguridad, cada vez que ejecutamos un comando utilizando sudo, es necesario introducir la contraseña del usuario que lo ejecuta.

El problema viene si necesitas ejecutar un script que haga uso de sudo, como en el caso de renovar mi certificado Let’s Encreypt

Tenemos dos opciones, o bien configuramos un usuario para que pueda ejecutar sudo sin que pida contraseña independientemente del comando o bien configurar sudo para que permita ejecutar ciertos comandos sin necesidad de introducir la contraseña

Si prefieres utilizar la primera opción, basta con editar el fichero /etc/sudoers/010_pi-nopasswd

sudo nano /etc/sudoers.d/010_pi-nopasswd

y cambiar pi por el usuario que vayas a utilizar

pi ALL=(ALL) NOPASSWD: ALL

Personalmente no me gusta esta solución por temas obvios de seguridad, si necesito que un usuario ejecute un comando con privilegios de root sin que pida contraseña, le doy permisos para que solo pueda ejecutar ese comando.

En mi caso voy a dar permiso al usuario carlos para que pueda renovar los certificados lets encrypt, por lo que necesita hacer uso de sudo sin que pida la contraseña ya que lo voy a ejecutar usando cron.

Para ello editamos el fichero /etc/sudoers

sudo visudo

Y buscamos la entrada %sudo y añadimos a continuación el usuario y el comando :

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
carlos ALL=(ALL) NOPASSWD: /usr/bin/certbot renew  --quiet

Guardamos los cambios y listo, ya puedo programar mi cron para la renovación de los certificados sin que sudo pida la contraseña.

Espero que te haya gustado, pasa un buen día. 🐧

Ingrese la dirección de su instancia