¿Qué es lo que hace que la nueva membresía de grupo requiera un nuevo inicio de sesión (o un nuevo shell de inicio de sesión iniciado por su
o newgrp
) para ser visible?
Simplemente ejecutando otra instancia de bash (o cualquier otro shell) con --login
no funciona, pero algo que es suid root como su o newgrp funciona.
¿Se hereda algo del shell principal o se almacena en caché que oculta nuevas membresías de grupo?
Respuesta aceptada:
Cuando se crea un proceso secundario, el ID de usuario del proceso y los ID de grupo se heredan de su proceso principal.
Entonces, cuando cambia los grupos de sus usuarios (en realidad, cambia los archivos de configuración en algún lugar del disco), los procesos no lo notarán automáticamente y cambiarán sus ID de grupo (los procesos que no son raíz no tienen derechos para eso de todos modos).
Y cuando inicias bash... bueno, simplemente inicias bash, no sucede nada especial. Simplemente hereda los ID de grupo de los padres (shell gráfico u otro bash tal vez).
Pero cuando ejecuta su o inicia sesión, sucede toda la magia. Verifican si tiene permiso para iniciar sesión y cambiar su identificación de usuario y de grupo (usando llamadas al sistema que requieren una identificación raíz efectiva, por cierto, es por eso que tienen establecido el bit suid) para que todos sus procesos secundarios hereden estas identificaciones.