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. 🐧