Gestión de usuarios en un servidor Linux
Nivel: Principiante
Tiempo estimado: ~30 minutos
Objetivo: Conocer las herramientas de línea de comandos para crear y mantener cuentas, configurar el acceso estándar a los servicios y mantener la disponibilidad de forma segura.
Introducción
La gestión de usuarios en Linux es una habilidad fundamental para cualquier administrador de sistemas. Un control de acceso adecuado garantiza la estabilidad, la seguridad y la trazabilidad del servidor. En este tutorial veremos los fundamentos para añadir cuentas, conceder privilegios (incluida la escalada de privilegios en Linux) y mantener de forma segura la configuración estándar de los servicios.
Requisitos previos
Antes de empezar, asegúrese de que se cumplen las siguientes condiciones:
- Sistema operativo: Ubuntu 22.04/24.04 LTS, Debian 12/13, AlmaLinux/Rocky Linux 8/9/10, RHEL 8/9/10
- Acceso: acceso sudo o root al servidor mediante SSH
- Sistema: gestor de paquetes en funcionamiento
- Conocimientos necesarios: manejo seguro de la línea de comandos de Linux
Conceptos clave
Antes de realizar cambios, conviene entender cómo funcionan las cuentas:
- UID (User ID): un identificador numérico único asignado a cada usuario para controlar la propiedad y los permisos.
- GID (Group ID): un identificador numérico principal que asigna al usuario a un grupo concreto. Los grupos de Linux organizan a varios usuarios para compartir permisos.
- Directorio personal (home): el directorio predeterminado (
/home/username) donde se almacenan los archivos y configuraciones personales de un usuario. - Shell de inicio de sesión: el intérprete de comandos (como
/bin/bash) que se inicia cuando un usuario autorizado inicia sesión. Un usuario autorizado es una cuenta con permiso para acceder al sistema. - Contraseña: una cadena secreta de caracteres utilizada para la autenticación de usuarios en Linux. La autenticación es el proceso de verificar la identidad de un usuario.
- Adduser: un script interactivo (front-end) para crear cuentas, utilizado principalmente en sistemas Debian/Ubuntu.
- Useradd: una utilidad binaria nativa y de bajo nivel para crear cuentas en todas las distribuciones de Linux.
- Bloqueo de cuenta (Account lock): la acción de deshabilitar los inicios de sesión basados en contraseña para proteger el servidor.
- Caducidad de cuenta (Account expiration): la acción de deshabilitar automáticamente una cuenta en una fecha determinada.
Paso 1: Crear un nuevo usuario
Para crear un nuevo usuario se utiliza el comando adduser (en Debian/Ubuntu) o el comando useradd (en RHEL/AlmaLinux).
Sustituya johndoe por el nombre de usuario que desee en los ejemplos siguientes. Ejecute el siguiente comando para crear un usuario llamado johndoe:
sudo adduser johndoe
Se le pedirá que introduzca una contraseña y datos opcionales del usuario.
Salida esperada:
La salida contendrá líneas sobre la creación del grupo, el usuario y el directorio personal, y la copia de archivos desde /etc/skel. El UID/GID exacto depende de su sistema.
En RHEL/AlmaLinux, utilice sudo useradd -m johndoe (la opción -m garantiza la creación de /home/johndoe) y establezca la contraseña manualmente con el comando passwd: sudo passwd johndoe.
Paso 2: Entender sudo en un servidor Linux
Los usuarios estándar no pueden modificar la configuración del sistema ni instalar software. El comando sudo de Linux permite a los usuarios autorizados ejecutar comandos con privilegios de root.
2.1 Añadir un usuario al grupo sudo
La forma más sencilla de conceder privilegios es añadir al usuario al grupo administrativo predefinido con el comando usermod.
Ubuntu/Debian:
sudo usermod -aG sudo johndoe
RHEL/AlmaLinux:
sudo usermod -aG wheel johndoe
El comando usermod añade (-a) al usuario al grupo suplementario (-G). El usuario johndoe ya puede ejecutar tareas administrativas anteponiendo sudo a los comandos. Si todo va bien, el comando no produce salida. Puede comprobarlo con groups johndoe: el grupo sudo (o wheel) debería aparecer en la lista.
Paso 3: Modificar las propiedades del usuario
Puede que necesite bloquear una cuenta o cambiar su contraseña.
3.1 Cambiar una contraseña
Para forzar un cambio de contraseña o actualizar una contraseña olvidada, ejecute lo siguiente con el comando passwd:
sudo passwd johndoe
Se le pedirá que introduzca y confirme la nueva contraseña. Una vez hecho, el usuario podrá iniciar sesión con las nuevas credenciales.
3.2 Bloquear una cuenta
Si un usuario deja la empresa, debe realizar un bloqueo de cuenta para proteger el servidor:
sudo usermod -L johndoe
La cuenta se bloquea de inmediato, lo que impide cualquier nuevo inicio de sesión basado en contraseña. Para desbloquearla más adelante, utilice sudo usermod -U johndoe.
Ambos comandos no producen salida. Puede verificar el estado con passwd -S johndoe (estado L = bloqueada, P = activa).
3.3 Establecer la caducidad de la cuenta
Para deshabilitar automáticamente una cuenta en una fecha concreta, establezca una caducidad de cuenta:
sudo usermod -e 2026-12-31 johndoe
Así, los contratistas temporales pierden el acceso de forma automática.
Puede comprobar la fecha de caducidad con sudo chage -l johndoe. Es posible que muestre la fecha un día antes debido al procesamiento del límite UTC; es normal y la cuenta caducará correctamente.
Paso 4: Usar el comando sudo de Linux de forma segura para proteger el servidor
El archivo sudoers (/etc/sudoers) controla exactamente quién puede usar sudo y qué puede ejecutar.
Para editar el archivo sudoers, utilice siempre visudo. Comprueba si hay errores de sintaxis antes de guardar y evita bloqueos.
Una buena práctica recomendada es crear un archivo independiente para cada regla en lugar de editar el archivo principal:
sudo visudo -f /etc/sudoers.d/johndoe
Esto simplifica la reversión de reglas y reduce el riesgo de dañar la configuración principal de sudoers.
Para permitir que johndoe reinicie el servicio de sincronización horaria sin contraseña, añada la línea correspondiente a su sistema operativo:
Ubuntu/Debian:
johndoe ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart systemd-timesyncd
RHEL/AlmaLinux:
johndoe ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart chronyd
Guarde y salga. johndoe ya puede reiniciar el servicio sin que se le solicite contraseña.
El usuario johndoe debe ejecutar el comando como sudo systemctl restart systemd-timesyncd (o chronyd), es decir, específicamente a través de sudo. Una llamada directa para reiniciar el servicio sin sudo devolverá un error de polkit que exige autenticación interactiva.
No edite nunca los archivos sudoers directamente con nano o vim. Un error de sintaxis inutilizará el acceso sudo en todo el sistema y obligará a arrancar en modo de rescate para corregirlo.
Paso 5: Eliminar un usuario
Cuando una cuenta ya no es necesaria, elimínela para mantener el servidor ordenado.
Para eliminar el usuario conservando sus archivos:
sudo deluser johndoe
En RHEL/AlmaLinux: sudo userdel johndoe
Si ejecuta el comando sin --remove-home (o -r), /home/johndoe y los archivos del usuario permanecen en el disco. Esto es útil para archivar datos, pero debe ser consciente de los archivos restantes.
Para eliminar el usuario y su directorio personal:
sudo deluser --remove-home johndoe
En RHEL/AlmaLinux: sudo userdel -r johndoe
Para eliminar el archivo sudoers del usuario, si se creó alguno, ejecute:
sudo rm -f /etc/sudoers.d/johndoe
La cuenta de usuario ha quedado completamente eliminada del sistema.
Antes de eliminar un usuario, asegúrese de que ningún servicio en segundo plano dependa de su UID o de sus grupos de Linux.
Verificación
Para verificar el nuevo usuario y sus pertenencias a grupos, utilice el comando id:
id johndoe
Salida esperada:
La salida mostrará el UID, el GID (que puede diferir de 1001) y una lista de grupos. Compruebe que está presente el grupo sudo (Debian/Ubuntu) o wheel (RHEL/AlmaLinux). En Debian/Ubuntu también puede aparecer en la lista el grupo users; es normal.
Para probar el acceso sudo, cambie al nuevo usuario:
su - johndoe
A continuación, ejecute un comando que requiera privilegios:
sudo ls /root
Si se le solicita, introduzca la contraseña de johndoe (la establecida en el Paso 1), no la de root. Debería ver el contenido del directorio /root.
Solución de problemas
- Errores de sintaxis en sudoers: si rompe accidentalmente el archivo sudoers, a menudo puede corregirlo ejecutando
pkexec visudodesde otra sesión. Sipkexecno está disponible, deberá arrancar el servidor en modo de recuperación/monousuario para editar el archivo. - Acceso sudo perdido: si pierde el acceso sudo pero aún dispone de la contraseña de root, inicie sesión directamente como root (por ejemplo, con
su -) para corregir la pertenencia a grupos. - Verificar los privilegios de un usuario: para comprobar exactamente qué comandos puede ejecutar un usuario, utilice
sudo -l -U johndoe.
Reversión (rollback)
Si necesita revertir los cambios realizados en este tutorial:
- Elimine al usuario del grupo sudo:
sudo gpasswd -d johndoe sudo(owheel). - Revierta cualquier adición realizada mediante
visudo. - Elimine el usuario y su directorio personal:
sudo deluser --remove-home johndoe(osudo userdel -r johndoe). - Elimine su archivo sudoers específico:
sudo rm -f /etc/sudoers.d/johndoe.
Conclusión
Configurar correctamente las cuentas le permite gestionar usuarios en Linux de forma segura sin comprometer la seguridad del sistema. Al comprender el comando adduser, el comando usermod y el comando passwd, junto con una configuración segura de sudo, mantiene un entorno estable y trazable.
Versión del documento: 1.0
Última actualización: mayo de 2026
Responsable: Equipo de documentación técnica