Las comprobaciones de autorización de Linux actúan sobre credenciales de procesos, no directamente sobre un nombre de usuario escrito. Un proceso tiene varios ID de usuario y grupo relacionados, cada uno con una función distinta. La mayoría de los programas normales empiezan con identidades coincidentes, mientras que los programas con privilegios pueden usar deliberadamente valores diferentes.
Permisos · Lección 7
Permisos de procesos
Aprende cómo los ID de usuario real, efectivo y guardado ayudan a los procesos de Linux a identificar al llamador y gestionar privilegios.
ID de usuario real
El ID de usuario real identifica la cuenta que inició el proceso o su sesión de inicio antecesora. Los programas pueden consultarlo para distinguir al llamador de una identidad efectiva elevada.
En una orden normal iniciada por el usuario Bob, el ID de usuario real suele coincidir con el UID de Bob. Crear otro proceso no crea una cuenta nueva ni cambia por sí solo esta identidad.
¿Qué identifica normalmente el ID de usuario real de un proceso?
ID de usuario efectivo
El ID de usuario efectivo es la credencial de usuario que se emplea en muchas comprobaciones de sistema de archivos y privilegios. Normalmente coincide con el UID real. Al ejecutar un programa setuid respetado, puede inicializarse en su lugar a partir del propietario del ejecutable.
Por ejemplo, una utilidad de contraseñas cuidadosamente diseñada puede ejecutarse con un UID efectivo elevado para actualizar datos protegidos de autenticación. El programa todavía debe aplicar la política según el llamador, la cuenta solicitada, los resultados de PAM y otro contexto. Poseer un UID efectivo no hace que todas las operaciones solicitadas sean automáticamente legítimas.
¿Qué ID de usuario se usa en muchas decisiones de control de acceso realizadas en nombre de un proceso?
ID set-user-ID guardado
El ID set-user-ID guardado permite que un programa conserve una identidad que puede restaurar después, con sujeción a las reglas de las llamadas al sistema. Un programa con privilegios puede cambiar temporalmente su UID efectivo a un valor menos privilegiado, realizar trabajo normal con autoridad reducida y restaurar la identidad guardada únicamente para una operación de ámbito reducido.
Esto es más seguro que mantener autoridad elevada durante todo el programa, pero solo si se implementa correctamente. Los programas deben descartar los privilegios de forma permanente cuando ya no sean necesarios y comprobar si falla cada llamada que cambia credenciales.
¿Por qué puede un programa con privilegios conservar un ID set-user-ID guardado?
Los ID de usuario son solo parte del conjunto de credenciales
Los procesos también tienen credenciales de grupo reales, efectivas, guardadas y complementarias. Los ID del sistema de archivos, las capacidades, los espacios de nombres, los módulos de seguridad, las ACL, las opciones de montaje y las políticas de servicios pueden afectar también a la autorización. Por tanto, «el UID lo permite» suele ser solo parte de una explicación completa.
Usa herramientas como ps y /proc/PROCESS/status para consultar las credenciales en Linux. La disponibilidad de los campos y los formatos de visualización varían, así que consulta la documentación local y no cambies credenciales simplemente para experimentar en un sistema compartido.
Para la mayoría de las órdenes normales sin transición de privilegios, ¿cómo se comparan los UID real y efectivo?
Lección completada
Has completado Permisos de procesos
Ahora puedes explicar por qué un proceso de Linux puede llevar varias identidades de usuario.
Usa el UID real para identificar al llamador original.
Relaciona el UID efectivo con las comprobaciones activas de autorización.
Usa la identidad guardada para comprender transiciones controladas de privilegios.
Considera los ID de grupo y los mecanismos de seguridad adicionales como parte de la decisión completa.
Guarda tu progreso
Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.
Crear una cuenta gratuita