Ejecutar un comando con SUDO sin contraseña
— Carlos M.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 Encrypt
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.