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:
-
root
siempre 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.bin
user1
es el propietario; sin embargo, solo pueden leer y ejecutar , peroroot
todavía tiene acceso completo (rwx ) al archivo. -
RUID es el ID de usuario real y nunca (casi) cambia. Si
user2
inicia 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 realuser2
como 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
user2
ejecutafile.bin
, el RUID seráuser2
y 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
user2
quiere cambiar su contraseña , ejecutan/usr/bin/passwd
. -
El RUID será
user2
pero el EUID de ese proceso serároot
. -
user2
puede usarpasswd
para cambiar solo su propia contraseña porque internamentepasswd
comprueba 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
root
en el caso depasswd
porque el proceso necesita escribir a/etc/passwd
y/o/etc/shadow
.