Cómo solucionar el incidente 'Usuario no está en el archivo Sudoers' en Linux

Publicado 27 de agosto de 2024

¿Te encuentras con el error "el nombre de usuario no está en el archivo sudoers" al intentar ejecutar un comando con privilegios sudo? En este artículo, veremos dos formas de solucionar este problema y otorgar acceso sudo al usuario.

Solución rápida: Agregar el usuario al archivo sudoers

Para corregir el error "el nombre de usuario no está en el archivo sudoers" y otorgar privilegios sudo al usuario, puedes agregar el nombre de usuario al archivo sudoers. Aquí tienes una guía:

  1. Abre una terminal e inicia sesión como un usuario con privilegios sudo o como el usuario root.

  2. Ejecuta este comando para editar el archivo sudoers:

    sudo visudo

    Este comando abre el archivo sudoers en un editor de texto y bloquea el archivo, evitando ediciones múltiples.

  3. Ve al final del archivo y agrega esta línea:

    nombreusuario ALL=(ALL) ALL

    Reemplaza "nombreusuario" con el nombre del usuario al que quieres otorgar privilegios sudo.

  4. Guarda los cambios y sal del editor de texto. En el editor de texto predeterminado (nano), presiona Ctrl+X, luego Y y Enter para guardar y salir.

Método alternativo: Agregar el usuario al grupo sudo

En lugar de modificar directamente el archivo sudoers, puedes agregar el usuario al grupo sudo. Este método es más simple y tiene menos riesgo de errores de sintaxis. Para agregar el usuario al grupo sudo, usa este comando:

sudo usermod -aG sudo nombreusuario

Reemplaza "nombreusuario" con el nombre del usuario que quieres agregar al grupo sudo.

---example Para agregar el usuario "juan" al grupo sudo, ejecuta:

sudo usermod -aG sudo juan

Después de ejecutar este comando, "juan" estará en el grupo sudo y podrá usar sudo para ejecutar comandos con permisos de superusuario.

Verificar el acceso sudo del usuario

Para comprobar si un usuario tiene acceso sudo, puedes usar el comando id para ver sus membresías de grupo:

id nombreusuario 

Si el usuario está en el grupo sudo o ha sido agregado al archivo sudoers, deberías ver "sudo" en la lista de sus grupos.

Consideraciones importantes

  • Ten cuidado al otorgar acceso sudo a los usuarios, ya que les permite realizar tareas que pueden modificar archivos y configuraciones del sistema.
  • Solo otorga acceso sudo a usuarios que lo necesiten para sus tareas y sean de confianza.
  • Revisa y actualiza regularmente la lista de usuarios con acceso sudo para mantener tu sistema seguro.

Entender la razón detrás del error

El archivo sudoers es un archivo de configuración en sistemas Linux que controla los permisos de usuario para ejecutar comandos con sudo (superuser do). Este archivo especifica qué usuarios o grupos tienen permitido usar sudo y obtener privilegios de root.

Cuando un usuario intenta ejecutar un comando con sudo, el sistema verifica el archivo sudoers para comprobar si el usuario tiene los permisos necesarios. Si el usuario no está listado en el archivo o carece de los permisos adecuados, aparece el mensaje de error "el nombre de usuario no está en el archivo sudoers".

El archivo sudoers generalmente se encuentra en /etc/sudoers y solo debe modificarse usando el comando visudo, que verifica errores de sintaxis y evita la corrupción del archivo.

Razones comunes para el error

  1. Usuario no agregado al archivo sudoers: Si el usuario fue creado recientemente o no se le otorgaron permisos sudo durante la configuración del usuario, su nombre de usuario no estará en el archivo sudoers.

  2. Usuario eliminado del archivo sudoers: Si se revocaron los permisos sudo del usuario o su entrada fue eliminada accidentalmente del archivo sudoers, ya no tendrán acceso sudo.

  3. Usuario no está en el grupo sudo: Algunas distribuciones de Linux, como Ubuntu, usan un grupo sudo en lugar de agregar usuarios directamente al archivo sudoers. Si el usuario no es miembro del grupo sudo, no podrá usar sudo.

  4. Errores de sintaxis en el archivo sudoers: Si hay errores de sintaxis o equivocaciones en el archivo sudoers, puede impedir que sudo funcione correctamente para todos los usuarios.

graph TD A[Usuario intenta ejecutar comando sudo] --> B{¿Usuario en archivo sudoers?} B -->|Sí| C[Comando ejecutado con permisos sudo] B -->|No| D{¿Usuario en grupo sudo?} D -->|Sí| C[Comando ejecutado con permisos sudo] D -->|No| E[Error: nombre de usuario no está en el archivo sudoers]

---example:"Agregar un usuario al archivo sudoers"

Para agregar un usuario llamado "juan" al archivo sudoers, sigue estos pasos:

  1. Abre una terminal y ejecuta sudo visudo.
  2. Agrega la siguiente línea al archivo: juan ALL=(ALL) ALL.
  3. Guarda el archivo y sal.

Ahora, el usuario "juan" tendrá privilegios sudo.

Corregir el error

Para resolver el error "el nombre de usuario no está en el archivo sudoers", necesitas agregar el usuario directamente al archivo sudoers o añadirlo al grupo sudo, dependiendo de la configuración de tu sistema.

Método Comando
Agregar usuario al archivo sudoers sudo visudo, luego añadir nombreusuario ALL=(ALL) ALL
Agregar usuario al grupo sudo sudo usermod -aG sudo nombreusuario

Siempre usa el comando visudo para editar el archivo sudoers para minimizar el riesgo de errores de sintaxis y asegurar que los permisos sudo se otorguen correctamente.

Cuando encuentras el mensaje de error "el nombre de usuario no está en el archivo sudoers. Este incidente será reportado", comúnmente significa que el usuario con el que estás intentando ejecutar comandos no tiene los privilegios sudo necesarios. Este error ocurre cuando un usuario del sistema intenta ejecutar un comando usando el comando sudo sin estar listado en el archivo sudoers o ser miembro del grupo sudo.

Agregar usuario al grupo sudo

Otra forma de dar privilegios sudo a un usuario es agregándolo al grupo sudo. El grupo sudo es un grupo especial que permite a sus miembros usar el comando sudo y ejecutar comandos con permisos de superusuario.

Para agregar un usuario al grupo sudo, usa el comando usermod con las opciones -aG seguidas del nombre del grupo y el nombre de usuario:

sudo usermod -aG sudo nombreusuario

Reemplaza nombreusuario con el nombre de usuario real que quieres agregar al grupo sudo.

Por ejemplo, para agregar el usuario "maría" al grupo sudo, ejecuta:

sudo usermod -aG sudo maría

Después de ejecutar este comando, el usuario "maría" será miembro del grupo sudo y podrá usar el comando sudo para ejecutar comandos con privilegios de superusuario.

Usar el grupo sudo para gestionar los permisos de usuario tiene varias ventajas:

Gestión simplificada

En lugar de editar el archivo sudoers para cada usuario, puedes agregar o eliminar usuarios del grupo sudo para dar o quitar acceso sudo.

Consistencia

Al usar el grupo sudo, mantienes un método consistente para otorgar privilegios sudo a múltiples usuarios.

Reducción del riesgo de errores de sintaxis

Agregar usuarios al grupo sudo elimina la necesidad de cambiar el archivo sudoers directamente, reduciendo el riesgo de errores de sintaxis que podrían impedir que sudo funcione correctamente.

Auditoría más fácil

Puedes verificar rápidamente qué usuarios tienen privilegios sudo listando los miembros del grupo sudo usando el comando:

grep sudo /etc/group

Este comando mostrará una línea como:

sudo:x:27:maría,pedro,ana

En el ejemplo anterior, los usuarios "maría", "pedro" y "ana" son miembros del grupo sudo y tienen privilegios sudo.

Es importante tener en cuenta que el grupo sudo puede no estar disponible en todas las distribuciones de Linux. Algunos sistemas, como CentOS, usan un grupo wheel en su lugar. Siempre verifica la documentación de tu distribución para encontrar el grupo correcto para otorgar privilegios sudo.

Por ejemplo, en CentOS, puedes agregar un usuario al grupo wheel para darle privilegios sudo:

sudo usermod -aG wheel nombreusuario

Modificar el archivo sudoers

Aunque agregar un usuario al grupo sudo es una forma simple de otorgar privilegios sudo, puede haber situaciones donde necesites modificar el archivo sudoers. La edición del archivo sudoers debe hacerse con precaución, ya que los errores de sintaxis pueden hacer que sudo deje de funcionar.

Para editar el archivo sudoers, debes usar un editor de texto con privilegios de root. El método recomendado es usar el comando visudo, que abre el archivo sudoers en el editor de texto predeterminado y verifica errores de sintaxis al guardar los cambios. Para abrir el archivo sudoers con visudo, ejecuta:

sudo visudo

Una vez que el archivo esté abierto, puedes agregar un usuario o grupo al archivo sudoers usando la siguiente sintaxis:

nombreusuario ALL=(ALL) ALL
%nombregrupo ALL=(ALL) ALL

Reemplaza nombreusuario con el nombre de usuario real y nombregrupo con el nombre de grupo real al que quieres otorgar privilegios sudo.

---example:"Otorgar acceso sudo a un usuario"

Para dar acceso sudo al usuario "juan", agrega esta línea al archivo sudoers:

juan ALL=(ALL) ALL

Esto permite al usuario "juan" ejecutar cualquier comando con privilegios sudo desde cualquier host.

Mejores prácticas al modificar el archivo sudoers

  • Siempre usa visudo para editar el archivo sudoers
  • Verifica dos veces la sintaxis de tus cambios
  • Limita el acceso sudo solo a los comandos y usuarios necesarios
  • Usa grupos para gestionar el acceso sudo de múltiples usuarios
  • Mantén una copia de seguridad de tu archivo sudoers antes de hacer cambios

Verificar la solución

Después de agregar el usuario al archivo sudoers o al grupo sudo, debes verificar que los cambios hayan surtido efecto y que el usuario ahora pueda ejecutar comandos con privilegios sudo.

Probar el acceso sudo

Para comprobar si el usuario puede ejecutar comandos sudo, cambia a su cuenta o inicia sesión como el usuario, luego intenta ejecutar un comando con sudo, como:

sudo ls

Este comando intentará listar el contenido del directorio actual con privilegios de superusuario. Si el usuario tiene acceso sudo, el comando se ejecutará con éxito después de que el usuario ingrese su contraseña. Si el usuario no tiene privilegios sudo, aparecerá un mensaje de error indicando que el usuario no está en el archivo sudoers.

Aquí tienes un ejemplo de cómo probar el acceso sudo para el usuario "juan":

su juan
sudo ls

Si "juan" tiene privilegios sudo, el comando ls se ejecutará y mostrará el contenido del directorio. Si no, aparecerá un mensaje de error como este:

juan no está en el archivo sudoers. Este incidente será reportado.

Verificar las membresías de grupo

Otra forma de verificar el acceso sudo es comprobando las membresías de grupo del usuario con el comando groups:

groups juan

Si el usuario ha sido agregado al grupo sudo, deberías ver "sudo" en la salida:

juan : juan sudo

Esta salida confirma que el usuario "juan" está en el grupo sudo y tiene privilegios sudo.

Solución de problemas de acceso sudo

Si el usuario aún no puede usar sudo después de agregarlo al archivo sudoers o al grupo sudo, verifica lo siguiente:

  • La sintaxis del archivo sudoers es correcta y no hay errores en la entrada del usuario
  • El usuario ha sido agregado al grupo correcto (sudo o wheel, dependiendo de la distribución)
  • El usuario ha cerrado sesión y vuelto a iniciar sesión, o el sistema se ha reiniciado para que los cambios de grupo surtan efecto

Mensajes de error comunes de sudo y soluciones

Mensaje de error Solución
nombreusuario no está en el archivo sudoers. Este incidente será reportado. Agrega el usuario al archivo sudoers o al grupo sudo.
[sudo] contraseña para nombreusuario:
nombreusuario no está en el archivo sudoers. Este incidente será reportado.
El usuario no está en el archivo sudoers o en el grupo sudo. Agrega el usuario al grupo o archivo correcto.
Lo siento, el usuario nombreusuario no tiene permitido ejecutar '/ruta/al/comando' como root en nombrehost. El usuario está en el archivo sudoers, pero su entrada no le permite ejecutar el comando. Modifica la entrada del usuario en el archivo sudoers para otorgar los permisos necesarios.

---example Para agregar el usuario "ana" al grupo sudo en un sistema Ubuntu, usa este comando:

usermod -aG sudo ana

Después de ejecutar este comando, cierra sesión y vuelve a iniciar sesión como "ana", luego prueba el acceso sudo:

sudo ls

Si el comando se ejecuta con éxito, "ana" ahora tiene privilegios sudo.