ID de usuario real, efectivo y guardado en Linux

Cada usuario en un sistema operativo similar a Unix se identifica con un número entero diferente, este número único se denomina ID de usuario. 

Hay tres tipos de UID definidos para un proceso, que se pueden cambiar dinámicamente según el privilegio de la tarea. 

Los tres tipos diferentes de UID definidos son: 
1. ID de usuario real 
2. ID de usuario efectivo 
3. ID de usuario guardado 

1. ID de usuario real: para un proceso, el ID de usuario real es simplemente el ID de usuario del usuario que lo inició. Define a qué archivos tiene acceso este proceso. 

2. ID de usuario efectivo: normalmente es lo mismo que ID de usuario real, pero a veces se cambia para permitir que un usuario sin privilegios acceda a archivos a los que solo puede acceder un usuario privilegiado como root.

Si ve el permiso del archivo /usr/bin/passwd:

-rwsr-xr-x 1 root root 59640 Mar 23  2019 /usr/bin/passwd 

Entonces, si un usuario no root ejecuta este archivo, el EUID del proceso será «0», es decir, root y UID seguirán siendo los mismos que los del usuario original.

3. ID de usuario guardado: se usa cuando un proceso que se ejecuta con privilegios elevados (generalmente raíz) necesita realizar algún trabajo sin privilegios, esto se puede lograr cambiando temporalmente a una cuenta sin privilegios. 

Mientras se realiza un trabajo sin privilegios, el UID efectivo se cambia a un valor de privilegio más bajo, y el euid se guarda en el ID de usuario guardado (suid), de modo que se puede usar para volver a cambiar a una cuenta privilegiada cuando se completa la tarea. 

Puede imprimir UID simplemente escribiendo id en la terminal: 

# id

Producción:

uid=1000(mandeep) gid=1000(mandeep) 
groups=1000(mandeep), 4(adm), 24(cdrom), 
27(sudo), 30(dip), 46(plugdev), 113(lpadmin), 
128(sambashare)

El comando id se puede usar para imprimir ID de usuario y grupo reales y efectivos 

Diferentes opciones de identificación:

-g, --group : print only effective group id
-G, --groups : print all group IDs
-r, --real : print only real user id
-u, --user : print only effective user id

Por ejemplo :  

id -g

Producción :  

1000

Nota: mientras usa el comando id con la opción -r, obtendrá un error como 

id: cannot print only names or real IDs in default format

Para lidiar con esto, use la opción -r junto con otra opción, por ejemplo, id -rg 
Ahora, para configurar la ID de usuario real, la ID de usuario efectiva y la ID de usuario establecida guardada del proceso de llamada, usamos setresuid() y setresgid()  
Sintaxis:  

int setresuid(uid_t ruid, uid_t euid, uid_t suid); # for specific user
int setresgid(gid_t rgid, gid_t egid, gid_t sgid); # for specific group

Valor devuelto: 
en caso de éxito, se devuelve 0. 
En caso de error, se devuelve -1. 

Para más detalles: Utilice la página del manual de Linux (identificación de usuario man).

Publicación traducida automáticamente

Artículo escrito por msdeep14 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *