Inicio
» LINUX
»
Cómo ejecutar sudo sin contraseña en Linux
Cómo ejecutar sudo sin contraseña en Linux
Puedes ejecutar sudo sin contraseña añadiendo una NOPASSWDregla a la política de sudoers. La opción más segura es permitir solo el comando administrativo exacto que necesitas, en lugar de deshabilitar la solicitud de contraseña para todos los comandos sudo.
Antes de realizar cualquier cambio, recuerde qué implica esta configuración: cualquier persona o entidad que obtenga el control de su cuenta iniciada podrá ejecutar el comando permitido como root sin necesidad de autenticación adicional. El manual de sudoers documenta NOPASSWDla etiqueta que elimina la autenticación para los comandos correspondientes.
Por qué sudo -s no es un método sudo sin contraseña
El consejo anterior de ejecutarlo sudo -sno configura realmente sudo sin contraseña. La -sopción inicia una consola con sudo, pero la política de sudo aún puede requerir que te autentiques primero. También es posible que veas que se ejecutan varios comandos sin que se te solicite otra solicitud, ya que sudo normalmente almacena en caché la autenticación exitosa durante un breve período. Esto es diferente a una NOPASSWDregla permanente.
Ejecutar un comando sudo específico sin contraseña
Este ejemplo permite al usuario alexreiniciar Nginx sin contraseña. Sustituya el nombre de usuario, el comando y los argumentos por valores que coincidan con su sistema.
1. Confirma tu nombre de usuario y la ruta del comando.
Ejecute los siguientes comandos como su usuario habitual:
whoami
command -v systemctl
El segundo comando puede devolver /usr/bin/systemctl. Utilice la ruta que indique su propio sistema. Las reglas de sudoers deben identificar los comandos por su ruta completa.
Antes de escribir la regla sudoers, compruebe el nombre de la cuenta y la ruta completa del comando.
2. Crea un archivo de configuración específico para sudoers.
En lugar de editar /etc/sudoersdirectamente, utilice visudocon un archivo en /etc/sudoers.d:
sudo visudo -f /etc/sudoers.d/alex-nopasswd
Normalmente, deberá introducir su contraseña en este paso de configuración. visudoSe prefiere porque comprueba la sintaxis antes de aceptar los cambios. El manual de Ubuntu visudo también indica que visudobloquea el archivo durante la edición y comprueba si hay errores de análisis.
Abra un archivo sudoers drop-in separado en visudolugar de editar el archivo de política principal con un editor de texto normal.
3. Agregue la regla NOPASSWD más restrictiva que necesite.
Para el ejemplo de reinicio de Nginx, agregue:
alex ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
Esta regla permite que solo el comando con esos argumentos se ejecute como root sin autenticación. Para permitir varios comandos específicos, separe las especificaciones de los comandos con comas.
Si desea deliberadamente que todos los comandos sudo de un usuario omitan la autenticación, la regla general es:
alex ALL=(ALL:ALL) NOPASSWD: ALL
Esto es mucho menos seguro y rara vez es la mejor opción en una estación de trabajo o sistema compartido. Una sesión de usuario comprometida tendría acceso directo a privilegios de administrador sin restricciones.
Una regla específica para el comando es más segura que otorgar NOPASSWD: ALL.
4. Validar y probar la regla
Después de guardar y salir del editor, compruebe la política completa de sudoers:
sudo visudo -c
No omita esta comprobación. La visudodocumentación explica que la política de sudoers se evalúa en su conjunto, por lo que comprobar la configuración completa permite detectar problemas que puedan estar relacionados con los archivos incluidos.
A continuación, invalide cualquier credencial sudo almacenada en caché y realice la prueba de forma no interactiva:
sudo -k
sudo -n /usr/bin/systemctl restart nginx
Esta -nopción le indica a sudo que no solicite contraseña. Si la regla coincide, el comando se ejecuta sin pedirla. Si aún se requiere autenticación, sudo finaliza con un error en lugar de esperar la entrada. Esto resulta sudo -nespecialmente útil para scripts que nunca deben quedarse bloqueados al solicitar una contraseña.
Valide la política, borre las credenciales almacenadas en caché y úselas sudo -npara confirmar que el comando realmente ya no necesita una contraseña.
Solución de problemas de sudo sin contraseña
El comando sigue solicitando una contraseña: confirme que el nombre de usuario, la ruta del comando y los argumentos coinciden exactamente con la entrada de sudoers.
El comando no está permitido: ejecute sudo -lpara revisar los privilegios asignados a su cuenta.
Parece que se ignora el archivo de inserción: utilice un nombre de archivo simple como alex-nopasswd. Algunas configuraciones de sudoers ignoran los archivos /etc/sudoers.dcuyos nombres contienen un punto o terminan en sufijos de estilo de copia de seguridad.
Debes deshacer el cambio: vuelve a abrir el menú desplegable con sudo visudo -f /etc/sudoers.d/alex-nopasswd, elimina o restringe la regla, guarda y vuelve a ejecutar sudo visudo -c.
Buenas prácticas
Utilice sudo sin contraseña solo cuando sea estrictamente necesario, como en el caso de una acción de servicio controlada o una tarea de automatización. Prefiera una ruta de comando y argumentos exactos, evítelos NOPASSWD: ALLsiempre que sea posible y mantenga la regla sudoers lo más pequeña posible. De esta forma, se conserva la mayor parte de la protección de sudo, eliminando la solicitud de contraseña cuando sea realmente necesario.