Elegir espacio

Dos espacios

¿Qué quieres consultar?

Elige el espacio al que quieres entrar.

Recorrido · SistemasBloque II · Unidad 2.4

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.

PreguntaPlanoEjemplo 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:

  • x permite buscar/travesar nombres conocidos;
  • r permite listar entradas;
  • w permite 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:

  1. inspecciona con sudo -l qué está permitido;
  2. identifica comando, argumentos, target y entorno;
  3. reduce el alcance;
  4. conserva estado previo;
  5. evita shells amplias si solo hace falta una operación;
  6. 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/environ segú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
HerramientaPreguntaLí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#

13. Fuentes#