Soy relativamente nuevo en los conceptos mencionados en la pregunta y leer sobre ellos de diferentes fuentes solo los hace más confusos. Así que esto es lo que entendí hasta ahora:
Cuando se nos otorgan permisos para un archivo, se ven así:
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
Suponemos que un usuario user2 quién está en el grupo users intenta ejecutar file.bin . Si no se estableciera el bit setuid, esto significaría que tanto el RUID como el EUID de file.bin eran iguales al UID de user2 . Pero dado que el bit setuid está configurado, esto significa que el RUID ahora es igual al UID de user2 , mientras que EUID es el UID del propietario del archivo, user1 .
Mis preguntas son:
- ¿Cuál es la diferencia entre el propietario del archivo y
root? ? Haceroot¿Tiene los mismos permisos que el propietario? ¿O necesitaríamos una entrada separada en la lista de permisos pararoot? ? - ¿Diferencia entre RUID y EUID?
- Según tengo entendido, el RUID y el EUID se aplican solo a los procesos. Si ese es el caso, ¿por qué tienen el valor de identificación de usuario?
- Si RUID es el usuario que crea el proceso y EUID es el usuario que está ejecutando el proceso actualmente, entonces la primera oración de la primera respuesta en esta pregunta no tiene ningún sentido para mí.
- ¿Entendí correctamente lo que hace el bit setuid?
Respuesta aceptada:
Aquí están las respuestas:
-
rootsiempre lleno Acceso a archivos y directorios. El propietario del archivo suele tenerlos también, pero esto no siempre es así. Por ejemplo:-r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.binuser1es el propietario; sin embargo, solo pueden leer y ejecutar , peroroottodavía tiene acceso completo (rwx ) al archivo. -
RUID es el ID de usuario real y nunca (casi) cambia. Si
user2inicia sesión en el sistema, el shell se inicia con su ID real establecido enuser2. Todos los procesos que inician desde el shell heredarán el ID realuser2como su identificación real.EUID es la ID de usuario efectiva , cambia para los procesos (no para el usuario) que ejecuta el usuario que han establecido el bit setuid .
Si
user2ejecutafile.bin, el RUID seráuser2y el EUID del proceso iniciado seráuser1.
Usemos el caso de passwd :
-rwsr-xr-x 1 root root 45396 may 25 2012 /usr/bin/passwd
-
Cuando
user2quiere cambiar su contraseña , ejecutan/usr/bin/passwd. -
El RUID será
user2pero el EUID de ese proceso serároot. -
user2puede usarpasswdpara cambiar solo su propia contraseña porque internamentepasswdcomprueba el RUID y, si no esroot, sus acciones se limitarán a la contraseña del usuario real. -
Es necesario que el EUID se convierta en
rooten el caso depasswdporque el proceso necesita escribir a/etc/passwdy/o/etc/shadow.