Gestión de usuarios y grupos

La gestión de usuarios y grupos es un pilar fundamental de la seguridad y la administración de sistemas en GNU/Linux. Permite controlar de forma precisa el acceso a los recursos del sistema, aislar privilegios y garantizar la trazabilidad de las acciones realizadas por cada usuario.

Para un administrador de sistemas, dominar la creación y mantenimiento de cuentas, comprender la estructura de los archivos de autenticación del sistema y aplicar políticas de contraseñas seguras es indispensable para proteger la infraestructura frente a accesos no autorizados.

Administración de Cuentas y Estructura de Grupos

Linux es un sistema operativo multiusuario por diseño. Cada proceso y archivo pertenece a un usuario y a un grupo específicos:

    Creación, Modificación y Eliminación de Usuarios: El ciclo de vida de las cuentas se gestiona mediante comandos dedicados. useradd (o adduser) permite crear cuentas nuevas configurando parámetros como el directorio personal o el intérprete de comandos por defecto; usermod modifica atributos existentes (como la pertenencia a grupos); y userdel elimina la cuenta, ofreciendo la opción de borrar también sus archivos personales. Para la gestión de contraseñas se emplea el comando passwd.
    Grupos Primarios y Secundarios: Todo usuario en Linux pertenece obligatoriamente a un grupo primario (asociado por defecto al crear su cuenta, cuyos identificadores suelen coincidir en nombre y UID/GID). Asimismo, puede pertenecer a múltiples grupos secundarios o suplementarios, lo cual facilita otorgar permisos compartidos sobre recursos específicos sin alterar la seguridad de los grupos principales.

Archivos de Configuración y Políticas de Contraseñas

A diferencia de sistemas operativos donde la gestión de usuarios se oculta tras interfaces gráficas opacas, en Linux la información de autenticación y seguridad reside en archivos de texto plano ubicados en el directorio /etc:

    /etc/passwd: Archivo público de lectura que almacena la información básica de las cuentas de usuario. Cada línea contiene campos separados por dos puntos (:) que especifican el nombre de usuario, la contraseña cifrada (representada tradicionalmente por una "x" indicando que el hash real está protegido), el UID (Identificador de usuario), el GID (Identificador de grupo primario), el nombre completo o descripción (GECOS), la ruta del directorio personal y el intérprete de comandos (shell) asignado.
    /etc/shadow: Archivo altamente restringido (accesible únicamente por el usuario administrador root) que contiene las contraseñas cifradas mediante funciones hash robustas (como SHA-512) junto con los parámetros temporales de caducidad de las credenciales (fecha de último cambio, días mínimos y máximos de uso, y periodo de aviso previo al vencimiento).
    /etc/group: Archivo que define la estructura de los grupos del sistema. Al igual que passwd, lista el nombre del grupo, la contraseña cifrada (generalmente vacía o con una "x"), el GID y una lista separada por comas con los nombres de los usuarios que pertenecen a ese grupo como miembros secundarios.
    Políticas de Contraseñas: Conjunto de reglas y restricciones destinadas a garantizar la robustez de las claves de acceso de los usuarios (longitud mínima, uso obligatorio de caracteres alfanuméricos y símbolos, caducidad temporal y prevención de reutilización de contraseñas anteriores), configurables a través de archivos como /etc/login.defs o mediante módulos PAM (Pluggable Authentication Modules).

Analogía: Imagina un complejo edificio de oficinas de alta seguridad. La creación y eliminación de usuarios equivale a emitir o retirar las tarjetas de identificación magnética para los empleados; el grupo primario es el departamento principal al que pertenece el trabajador (por ejemplo, contabilidad), mientras que los grupos secundarios son comités temporales o proyectos transversales en los que colabora puntualmente; el archivo /etc/passwd es el directorio general de empleados colgado en la entrada (muestra quiénes son y dónde está su despacho); /etc/shadow es la caja fuerte privada del departamento de seguridad que guarda los códigos de acceso cifrados y las fechas de caducidad de las tarjetas; /etc/group es el registro organizativo de los equipos de trabajo; y las políticas de contraseñas equivalen a la normativa interna que obliga a cambiar la clave de acceso cada cierto tiempo y prohíbe usar combinaciones demasiado sencillas como fechas de cumpleaños.

Actividad práctica

Objetivo:

Gestionar cuentas de usuario y grupos en un entorno Linux, analizando el contenido de los archivos de autenticación del sistema.

Tareas:

  1. Abre la terminal de Linux y utiliza el comando sudo useradd -m -s /bin/bash tec_usuario para crear un nuevo usuario con su directorio personal y shell asignados. Configura su contraseña ejecutando sudo passwd tec_usuario.
  2. Inspecciona las últimas líneas del archivo de configuración ejecutando tail -n 3 /etc/passwd para comprobar cómo se ha registrado la nueva cuenta y su identificador numérico (UID).
  3. Crea un grupo secundario llamado auditores mediante el comando sudo groupadd auditores y añade al usuario recién creado a dicho grupo usando sudo usermod -aG auditores tec_usuario. Verifica el resultado consultando el archivo /etc/group.
  4. Reflexiona sobre la importancia de restringir los permisos de lectura del archivo /etc/shadow frente al archivo /etc/passwd en términos de seguridad del sistema.

Preguntas de reflexión:

    ¿Qué diferencia técnica crítica existe entre la información expuesta en el archivo /etc/passwd y la almacenada en /etc/shadow?
    ¿Por qué se utiliza el carácter "x" en la segunda columna del archivo /etc/passwd en los sistemas Linux modernos?
    ¿Qué implicaciones de seguridad tiene asignar permisos de superusuario (root) o añadir cuentas al grupo de administración principal de forma indiscriminada?
    ¿Qué utilidad aporta la distinción entre grupos primarios y grupos secundarios a la hora de estructurar permisos complejos de archivos?
    ¿Cómo contribuyen las políticas de caducidad de contraseñas almacenadas en /etc/shadow a mitigar ataques por compromiso prolongado de credenciales?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Qué diferencia hay entre /etc/passwd y /etc/shadow?

El archivo /etc/passwd contiene información general de los usuarios (nombre, UID, GID, shell, directorio personal) y debe ser de lectura pública para que el sistema operativo identifique a los usuarios. El archivo /etc/shadow almacena las contraseñas cifradas mediante hash y las políticas de caducidad temporal, y está estrictamente protegido con permisos de lectura exclusivos para el administrador (root) para evitar que programas maliciosos intenten descifrar las claves.


2. ¿Por qué se utiliza una "x" en el archivo /etc/passwd?

Antiguamente, las contraseñas cifradas se guardaban directamente en el archivo /etc/passwd, el cual era accesible para cualquier usuario del sistema, facilitando ataques de fuerza bruta. Hoy en día, la "x" es simplemente un indicador visual que avisa al sistema de que el hash de la contraseña real ya no se encuentra ahí, sino oculto y protegido de forma segura en el archivo /etc/shadow.


3. ¿Qué implicaciones tiene otorgar privilegios de superusuario de forma indiscriminada?

Viola el principio de mínimo privilegio. Si cualquier usuario cuenta con permisos de administración (root o sudo total), un fallo de seguridad en su cuenta, una contraseña débil o un error humano pueden comprometer por completo la integridad, confidencialidad y disponibilidad de todo el sistema operativo, permitiendo que un atacante tome el control absoluto de la máquina.


4. ¿Qué utilidad aportan los grupos primarios y secundarios?

El grupo primario organiza por defecto la pertenencia principal del usuario y los permisos de creación de archivos. Los grupos secundarios permiten otorgar accesos modulares y compartidos a recursos específicos (como carpetas de proyectos o herramientas de administración) a múltiples usuarios de manera independiente, simplificando enormemente la gestión de listas de control de acceso.


5. ¿Cómo ayudan las políticas de caducidad de contraseñas en /etc/shadow?

Obligan a los usuarios a renovar sus credenciales de forma periódica y limitan el tiempo máximo que una contraseña comprometida o débil puede permanecer activa en el sistema. Esto reduce significativamente la ventana de oportunidad para que un atacante explote credenciales robadas y mantenga un acceso persistente no autorizado.