user2
necesita cerrar sesión y volver a iniciarla. Los permisos de grupo funcionan de esta manera:
- Cuando inicie sesión, sus procesos tendrán membresía de grupo en su grupo principal mencionado
/etc/passwd
, además de todos los grupos en los que se menciona a su usuario /etc/group
. (Más precisamente, el pw_gid
campo en getpw(your_uid)
, además de todos los grupos de los cuales su usuario es un miembro explícito . Más allá , /etc/passwd
y /etc/group
la información puede provenir de otros tipos de bases de datos de usuarios como NIS o LDAP). El grupo principal se convierte en la ID de grupo efectiva del proceso y los otros grupos se convierten en sus ID de grupo suplementarios .
- Cuando un proceso realiza una operación que requiere la pertenencia a un determinado grupo, como acceder a un archivo , ese grupo debe ser la ID de grupo efectiva o una de las ID de grupo suplementarias del proceso.
Como puede ver, su cambio en la membresía del grupo del usuario solo tiene efecto cuando el usuario inicia sesión. Para ejecutar procesos, es demasiado tarde. Por lo tanto, el usuario debe cerrar sesión y volver a iniciarla. Si eso es demasiado problema, el usuario puede iniciar sesión en una sesión separada (por ejemplo, en una consola diferente o con ssh localhost
).
Bajo el capó, un proceso solo puede perder privilegios (ID de usuario, ID de grupo, capacidades). El kernel inicia el init
proceso (el primer proceso después del arranque) ejecutándose como root, y cada proceso finalmente desciende de ese proceso¹. El login
proceso (o sshd
, o la parte de su administrador de escritorio que lo conecta) todavía se ejecuta como root. Parte de su trabajo es eliminar los privilegios de root y cambiar a los usuarios y grupos adecuados.
Hay una sola excepción: ejecutar un programa setuid o setgid . Ese programa recibe permisos adicionales: puede elegir actuar bajo varios subconjuntos de las membresías del proceso padre más la membresía adicional en el usuario o grupo que posee el ejecutable setxid. En particular, un programa raíz setuid tiene permisos de raíz, por lo tanto, puede hacer todo²; así es como a los programas les gusta su
y sudo
pueden hacer su trabajo.
Occasionally
En ocasiones, hay procesos que no se derivan de init (initrd, udev) pero el principio es el mismo: comenzar como root y perder privilegios con el tiempo.
²
Restringiendo marcos de seguridad multinivel como SELinux.