Los sistemas operativos similares a Unix identifican a un usuario por un valor llamado identificador de usuario , a menudo abreviado como ID de usuario o UID . El UID, junto con el identificador de grupo (GID) y otros criterios de control de acceso, se utiliza para determinar a qué recursos del sistema puede acceder un usuario. El archivo de contraseña asigna nombres de usuario textuales a UID. Los UID se almacenan en los inodos del sistema de archivos Unix , los procesos en ejecución , los archivos tar y el ahora obsoleto Servicio de información de red . En entornos compatibles con POSIX , el comando de la línea de comandosid
proporciona el UID del usuario actual, así como más información, como el nombre de usuario, el grupo de usuarios principal y el identificador de grupo (GID).
El estándar POSIX introdujo tres campos UID diferentes en la tabla de descriptores de procesos, para permitir que los procesos privilegiados asuman diferentes roles dinámicamente:
El UID ( euid
) efectivo de un proceso se utiliza para la mayoría de las comprobaciones de acceso. También se utiliza como propietario de los archivos creados por ese proceso. El GID ( egid
) efectivo de un proceso también afecta el control de acceso y también puede afectar la creación de archivos, dependiendo de la semántica de la implementación específica del kernel en uso y posiblemente de las opciones de montaje utilizadas. De acuerdo con la semántica de BSD Unix, la propiedad grupal otorgada a un archivo recién creado se hereda incondicionalmente de la propiedad grupal del directorio en el que se crea. De acuerdo con la semántica AT&T UNIX System V (también adoptada por las variantes de Linux), un archivo recién creado normalmente recibe la propiedad de grupo especificada por elegid
del proceso que crea el archivo. La mayoría de los sistemas de archivos implementan un método para seleccionar si se debe usar la semántica BSD o AT&T con respecto a la propiedad grupal de un archivo recién creado; La semántica BSD se selecciona para directorios específicos cuando se establece el permiso S_ISGID (s-gid). [1]
Linux también tiene un ID de usuario del sistema de archivos ( fsuid
) que se usa explícitamente para el control de acceso al sistema de archivos. Coincide con el a euid
menos que se establezca explícitamente lo contrario. Puede ser el ID de usuario de la raíz sólo si ruid
, suid
o euid
es root. Siempre que euid
se cambia, el cambio se propaga a fsuid
.
La intención de fsuid
es permitir que los programas (por ejemplo, el servidor NFS ) se limiten a los derechos del sistema de archivos de algunos dados uid
sin dar ese uid
permiso para enviarles señales. Desde el kernel 2.0, la existencia de fsuid
ya no es necesaria porque Linux se adhiere a las reglas SUSv3 para enviar señales, pero fsuid
permanece por razones de compatibilidad. [2]
La ID de usuario guardada ( suid
) se utiliza cuando un programa que se ejecuta con privilegios elevados necesita realizar un trabajo sin privilegios temporalmente; cambiar euid
de un valor privilegiado (normalmente 0
) a algún valor no privilegiado (cualquier cosa que no sea el valor privilegiado) hace que el valor privilegiado se almacene en suid
. [3] Posteriormente, un programa euid
se puede volver a configurar al valor almacenado en suid
, de modo que se puedan restaurar los privilegios elevados; un proceso sin privilegios puede establecer su euid
en uno de sólo tres valores: el valor de ruid
, el valor de suid
o el valor de euid
.