Tutoriel Linux

Visudo en Linux: modificar sudoers sin perder el acceso de root

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

un error en /etc/sudoers /etc/sudoers.d

Nunca edito sudoers con un editor que se ejecuta directamente sobre el archivo. visudo Bloquea la configuración durante la edición y verifica su sintaxis antes de guardar. En un servidor remoto, mantén también abierta una segunda sesión de root hasta la prueba final. Esta medida de seguridad es tan importante como el propio comando.

Tux valida una configuración de sudoers manteniendo el acceso de administrador de respaldo.
Visudo comprueba la sintaxis de los usuarios de sudo antes de guardar, pero una segunda sesión de root sigue siendo esencial en un servidor remoto.

Compruebe el acceso de superusuario antes de modificar una regla.

Primero, confirma que tu cuenta aún tiene privilegios de sudo y verifica qué comandos está autorizada a usar:

sudo-v
sudo-l
identificación
grupos

sudo-v Valida la información de autenticación sin ejecutar ningún comando sensible. sudo-l Muestra las reglas aplicadas a la cuenta. Si este paso falla, no modifique los permisos de sudo de esta sesión.

A continuación, abre una segunda terminal y mantén una sesión de administrador allí:

sudo-yo
OMS

No cierre esta sesión mientras edita. En una máquina remota, compruebe también el acceso a su consola, KVM o panel de recuperación. La guía en el Cuentas y grupos de Linux puede ayudarte a confirmar la cuenta objetivo antes de otorgarle privilegios.

Guarda los permisos de sudoers sin modificarlos.

-tiene conserva, en particular, al propietario, al grupo y al modo:

sudo cp -a /etc/sudoers "/root/sudoers.backup-$(date +%F-%H%M)"
sudo stat -c '%A %a %U:%G %n' /etc/sudoers /etc/sudoers.d

En muchas distribuciones, /etc/sudoers pertenece a raíz: raíz con un modo cuatrocientos cuarentaNo modifique los permisos al azar si su distribución utiliza una política diferente. Primero, anote el estado actual y guarde la ruta exacta a la copia de seguridad.

Edita el archivo principal con visudo.

Para abrir la configuración principal, simplemente ejecute:

sudo visudo

visudo

Una regla de sudoers normalmente sigue esta lógica: usuario o grupo, hosts involucrados, identidad de ejecución y luego comandos autorizados. Para autorizar la cuenta Alicia Para reiniciar y comprobar solo Nginx, primero verifique la ruta del binario:

comando -v systemctl

Si el comando regresa /usr/bin/systemctlLa regla puede adoptar esta forma:

no usar SIN CONTRASEÑA Por costumbre. Para la automatización, limítela a una sola cuenta, un solo comando y argumentos controlados. Una regla general que otorga acceso a un intérprete de comandos, editor o comando que puede ejecutar otros programas suele equivaler a otorgar acceso de administrador completo.

Crea un archivo limpio en /etc/sudoers.d

Para una regla específica de un departamento o equipo, prefiero un fragmento separado del archivo principal grande. Ábralo con la opción -F :

sudo visudo -f /etc/sudoers.d/administration

Elija un nombre simple, sin espacios, puntos ni caracteres especiales, como por ejemplo: Según la directiva @includedir Utilizados por la distribución, algunos nombres pueden ser ignorados. Después del registro, verifique el propietario y el modo:

sudo chown root:root /etc/sudoers.d/administration
sudo chmod 0440 /etc/sudoers.d/administration
sudo stat -c '%A %a %U:%G %n' /etc/sudoers.d/administration

El tutorial general sobre sudo en linux Se detalla la delegación por usuarios, grupos y alias. En este caso, el objetivo es más específico: instalar una regla verificable sin perder la posibilidad de revertir a la versión anterior.

Confirme la configuración completa antes de realizar la prueba.

Una vez finalizada la edición, ejecute una comprobación completa. Este comando verifica el archivo principal y los archivos incluidos a los que hace referencia:

sudo visudo -c

El resultado debería indicar que los archivos analizados son sintácticamente correctos. Si se informa de un fragmento, vuelva a abrir ese archivo exacto con No reinicie la máquina ni cierre la sesión de root mientras la comprobación esté fallando.

Desde la sesión raíz conservada, muestre los derechos de la cuenta de destino:

sudo -l -U alice

Esta lectura permite identificar una regla que no se ha cargado, un nombre de usuario incorrecto o una autorización mucho más amplia de lo esperado.

Pruebe en una nueva sesión antes de cerrar la raíz.

Inicie una tercera sesión con la cuenta en cuestión. No utilice simplemente la sesión que ya tiene un ticket sudo en caché. Invalide esta caché, solicite la lista de privilegios y, a continuación, ejecute únicamente el comando autorizado:

sudo-k
sudo-v
sudo-l
sudo systemctl status nginx

Verifique también que se siga rechazando un comando inesperado. Una regla es correcta si el usuario conserva el acceso esperado sin obtener más privilegios de los necesarios. Cierre la sesión de root de respaldo solo después de esta prueba.

Restaurar sudoers si falla la validación o el acceso.

Si Si falla, corrija el fragmento defectuoso de la sesión raíz aún abierta. Para volver al archivo guardado principal, reemplace la ruta con su copia de seguridad actual:


visudo -c

Si todas las sesiones de administrador están cerradas, utilice la consola del proveedor, el modo de recuperación o un entorno en vivo para montar el sistema y reparar la configuración. Editar el archivo sudoers desde una cuenta sin privilegios no funcionará.

Para comprender un rechazo después de una validación exitosa, revise los eventos sudo del inicio actual y, a continuación, el registro de autenticación si su distribución lo utiliza:


sudo tail -n 100 /var/log/auth.log

Allá Página del manual de Visudo documenta el bloqueo, el control y la opción -F. Documentación sudoers(5) Esto describe la sintaxis, las inclusiones y las reglas de comandos. Sobre todo, mantenga este orden: acceso de copia de seguridad, guardar, editar con visudo, validación global, y luego prueba en una nueva sesión.

sudo apt update && sudo apt upgrade