Bloque II · Módulo 2 · Unidad 2.4
Usuarios, grupos, sesiones y privilegio
Cómo Linux representa identidad, aplica autorización sobre rutas, extiende permisos con ACL y limita la elevación mediante mínimo privilegio.
Antes de empezar#
Un archivo puede mostrar el modo esperado y aun así denegar acceso. Quizá el proceso ejecuta con otra identidad, un directorio padre no permite búsqueda, la sesión no recibió una membresía nueva, una ACL limita derechos o una política adicional interviene.
Dependencias. Capas y procesos (1.1), diagnóstico (1.3), resolución y modo de archivos (2.1), proceso/sesión (2.2).
Alcance. UID/GID, nombres, grupos suplementarios, credenciales reales y
efectivas, cuentas de servicio, autenticación, autorización, PAM conceptual,
sesiones, permisos sobre rutas, ACL, umask, sudo, mínimo privilegio y
exposición de entorno.
Fuera de alcance. LDAP/Kerberos en producción, diseño de políticas PAM, SELinux/AppArmor en profundidad, gestión empresarial de secretos y hardening completo.
1. Identidad no es nombre#
El kernel usa identificadores numéricos. Los nombres son resoluciones de
usuarios y grupos proporcionadas por fuentes configuradas. /etc/passwd y
/etc/group son fuentes locales frecuentes; NSS puede consultar otras.
nombre "svc-api" ──getent──► UID 1204
proceso ───────────────────► credenciales numéricas
archivo ───────────────────► UID/GID propietarios
getent passwd svc-api consulta la resolución configurada; leer solo
/etc/passwd puede omitir otra fuente. id muestra identidad y grupos para la
consulta o proceso invocado, no necesariamente para otro proceso ya existente.
Nombres distintos podrían resolver al mismo ID durante una migración o un namespace puede mapear IDs. Para diagnosticar conserva nombre y número, además del alcance donde se observaron.
2. Credenciales del proceso#
Linux mantiene varias credenciales:
- UID/GID real: origen de identidad y ciertas comprobaciones;
- UID/GID efectivo: autoridad usada por muchas operaciones;
- IDs saved: permiten a programas privilegiados soltar y recuperar una identidad bajo reglas;
- IDs de filesystem: extensión Linux usada en comprobaciones de archivos;
- grupos suplementarios;
- capacidades y contexto de seguridad.
Para el bloque basta con preguntar: ¿qué credenciales usa el proceso al solicitar esta operación?
/proc/PID/status expone líneas Uid, Gid y Groups, sujeto a permisos y
namespaces. ps -o user,uid,group,gid ofrece otra vista. Una nueva membresía de
grupo no se inyecta mágicamente en procesos ya existentes; suele requerir una
nueva sesión o recreación controlada del proceso.
3. Autenticación, autorización y sesión#
Tres conceptos:
- autenticación: establecer o verificar una identidad;
- autorización: decidir si esa identidad puede realizar una acción;
- sesión: contexto de trabajo que puede configurar credenciales, límites, entorno y recursos.
PAM proporciona una arquitectura modular usada por programas para fases de autenticación, cuenta, credenciales y sesión. No es «el login» ni garantiza que todos los servicios lo usen igual.
| Pregunta | Plano | Ejemplo de evidencia |
|---|---|---|
| ¿Quién se presentó? | Autenticación. | Método y resultado del servicio de acceso. |
| ¿Puede escribir aquí? | Autorización. | Credenciales, ruta, modo, ACL y políticas. |
| ¿Qué entorno y límites recibió? | Sesión. | Proceso, variables, grupos, límites. |
| ¿Qué usuario de aplicación inició la petición? | Dominio de aplicación. | Contexto autenticado de la aplicación. |
Que una API autentique a alice no significa que el proceso Linux cambie a UID
de Alice. El servidor puede ejecutar como svc-api y aplicar autorización de
negocio dentro de la aplicación.
4. Cuentas humanas y de servicio#
Una cuenta humana necesita atribución y un ciclo de acceso. Una cuenta de servicio representa un workload y suele:
- carecer de login interactivo;
- poseer solo rutas necesarias;
- ejecutar un componente concreto;
- recibir credenciales o capacidades acotadas;
- tener ciclo de rotación y retiro.
Compartir una cuenta humana entre personas destruye atribución. Ejecutar todos los servicios como una cuenta amplia aumenta el radio de impacto.
UID bajo o shell nologin son convenciones de cuentas del sistema, no barreras
absolutas. Evalúa credenciales y mecanismos efectivos.
5. Permisos de ruta#
Para abrir /srv/shared/reports/today.csv, el proceso debe atravesar cada
directorio y realizar la operación sobre el objeto o directorio adecuado.
/ /srv /shared /reports today.csv
search → search → search → search + read/write según operación
En un directorio:
xpermite buscar/travesar nombres conocidos;rpermite listar entradas;wpermite modificar entradas, combinado normalmente con búsqueda;- sticky bit restringe retirada/rename en directorios compartidos bajo reglas.
Escribir contenido exige permiso sobre el archivo. Crear o retirar un nombre depende del directorio padre. Por eso un archivo read-only puede ser retirado por quien controla el directorio, y un archivo writeable puede ser inaccesible si falta búsqueda en un padre.
namei -l muestra componentes y modos. stat conserva IDs numéricos.
getfacl muestra ACL y derechos efectivos.
6. ACL y máscara#
Las ACL POSIX añaden usuarios y grupos nombrados:
user::rw-
user:svc-report:rw-
group::r--
group:auditors:r--
mask::r--
other::---
La máscara limita derechos efectivos de grupos y usuarios nombrados, excepto
el propietario. En el ejemplo, svc-report declara rw- pero la máscara deja
efectivo r--.
Una ACL de acceso aplica al objeto. Una ACL por defecto en un directorio participa en la ACL inicial de objetos nuevos; no modifica retroactivamente los existentes.
7. Umask y herencia#
La umask del proceso retira permisos del modo solicitado al crear. La shell
puede mostrar o cambiar su propia umask; un servicio puede recibir otra.
Para un árbol colaborativo, decide:
- grupo propietario;
- setgid en directorio para heredar grupo donde corresponda;
- umask del proceso;
- ACL de acceso;
- ACL por defecto para objetos futuros.
No mezcles todos los mecanismos sin necesidad. Captura estado anterior y cambia una variable para atribuir el resultado.
8. Privilegio y sudo#
sudo ejecuta una operación bajo otra identidad si la política lo autoriza.
No «arregla permisos» ni convierte una hipótesis en correcta.
Antes:
- inspecciona con
sudo -lqué está permitido; - identifica comando, argumentos, target y entorno;
- reduce el alcance;
- conserva estado previo;
- evita shells amplias si solo hace falta una operación;
- verifica y registra.
Root tampoco es omnipotente en todos los contextos: namespaces, capabilities, mount flags, LSM, filesystems remotos y políticas pueden limitar. «Root puede todo» es un modelo inseguro.
Mínimo privilegio significa conceder la capacidad necesaria, al sujeto correcto, sobre el recurso y tiempo necesarios, con trazabilidad y retiro. No significa hacer imposible operar.
9. Entorno y secretos#
El entorno forma parte del contexto de proceso y se hereda en muchas ejecuciones. Puede aparecer en:
/proc/PID/environsegún permisos;- volcados, diagnósticos o telemetría;
- scripts con trazado;
- subprocesses;
- herramientas de inspección del runtime.
Una variable evita incrustar un secreto en código, pero no garantiza confidencialidad. Evalúa quién puede inspeccionar el proceso, cómo se inyecta, si llega a logs, cuánto dura y cómo rota.
10. Diagnosticar acceso#
Ruta de investigación:
1. operación exacta
2. proceso y credenciales efectivas
3. resolución de identidad
4. cada componente de la ruta
5. objeto y directorio padre
6. modo + ACL + máscara
7. mount y políticas adicionales
8. cambio mínimo
9. prueba positiva + prueba negativa + rollback
| Herramienta | Pregunta | Límite |
|---|---|---|
id | ¿Qué identidad/grupos obtiene esta consulta? | No sustituye credenciales de un proceso ya vivo. |
getent | ¿Cómo resuelve NSS este nombre? | No demuestra autorización. |
namei -l | ¿Qué componentes y modos hay? | No muestra toda política ni ACL completa. |
getfacl | ¿Qué ACL y máscara efectivas existen? | Debe combinarse con sujeto y operación. |
sudo -l | ¿Qué autoriza la política sudo? | No concede por sí solo ni evalúa seguridad del comando. |
Si el modo y ACL parecen correctos, amplía hipótesis a mount read-only, atributos, filesystem remoto, namespace o LSM. No los desactives: observa primero.
11. Errores conceptuales frecuentes#
12. Síntesis y dominio#
Linux autoriza una operación comparando credenciales del proceso, contexto del objeto y políticas. Los nombres resuelven IDs; las sesiones capturan estado; los grupos y ACL conceden capacidades; sudo debe elevar una operación acotada.
Has alcanzado el dominio cuando puedes:
- distinguir nombre, UID/GID y credenciales reales/efectivas;
- explicar autenticación, autorización y sesión sin mezclarlas;
- recorrer una ruta completa y localizar la primera denegación;
- calcular derechos efectivos de una ACL con máscara;
- elegir grupo, umask o ACL con mínimo privilegio;
- probar acceso necesario, denegación restante y rollback.
Prácticas relacionadas#
SYS-Q-204: predecir identidad y autorización.SYS-L-204: corregir acceso sin abrir permisos globales.SYS-RV-204: revisar root, 777 y secretos.
13. Fuentes#
- Linux kernel — Credentials in Linux
Sujetos, objetos, reglas y cálculos de seguridad.
- Linux man-pages — credentials(7)
IDs reales, efectivos, saved, filesystem, grupos y sesiones.
- Linux man-pages — acl(5)
ACL de acceso, por defecto, máscara y algoritmo de comprobación.
- Linux-PAM — System Administrators' Guide
PAM como marco modular de autenticación, cuenta y sesión.