saber - tipos de usuarios en linux
Diferencia entre ID de usuario real, ID de usuario efectiva e ID de usuario guardado (1)
Ya estoy al tanto de la identificación de usuario real. Es el número único para un usuario en el sistema. En mi sistema, mi uid es
$ echo $UID
1014
$
¿Cuáles son las otras dos identificaciones? ¿Y cuál es el uso de la identificación de usuario efectiva y la identificación de usuario guardada y dónde la usamos en el sistema?
La distinción entre una identificación de usuario real y efectiva se hace porque es posible que tenga la necesidad de tomar temporalmente la identidad de otro usuario (la mayoría de las veces, eso sería
root
, pero podría ser cualquier usuario).
Si solo tuviera una identificación de usuario, entonces no habría forma de volver a cambiar a su identificación de usuario original después (aparte de dar su palabra por sentado, y en caso de que sea
root
, usar los privilegios de
root
para cambiar a cualquier usuario) .
Por lo tanto, la identificación de usuario real es quién es realmente (el propietario del proceso), y la identificación de usuario efectiva es lo que el sistema operativo observa para tomar una decisión sobre si se le permite o no hacer algo (la mayoría de las veces , hay algunas excepciones).
Cuando inicia sesión, el shell de inicio de sesión establece tanto la identificación de usuario real como la efectiva con el mismo valor (su identificación de usuario real) que proporciona el archivo de contraseña.
Ahora, también sucede que ejecuta un programa setuid, y además de ejecutarse como otro usuario (por ejemplo,
root
), el programa setuid
también
debe hacer algo en su nombre.
¿Como funciona esto?
Después de ejecutar el programa setuid, tendrá su identificación real (ya que usted es el propietario del proceso) y la identificación de usuario efectiva del propietario del archivo (por ejemplo,
root
) ya que es setuid.
El programa hace cualquier magia que necesite hacer con privilegios de superusuario y luego quiere hacer algo en su nombre. Eso significa que intentar hacer algo que no deberías poder hacer debería fallar . ¿Como hace eso? Bueno, obviamente, cambiando su identificación de usuario efectiva por la identificación de usuario real.
Ahora ese programa setuid no tiene forma de volver a cambiar ya que todo lo que el núcleo sabe es su identificación y ... su identificación . Bang, estás muerto.
Esto es para lo que sirve el ID de usuario del conjunto guardado.