GNU/Linux >> Tutoriales Linux >  >> Linux

¿Agregué un usuario a un grupo, pero los permisos de grupo en los archivos siguen sin tener efecto?

Cambié los permisos de un archivo (chmod g+w testfile ) y ejecutando ls -l testfile da:

-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile

Luego agregué un usuario a ese grupo ("/etc/group ” tiene user1:x:1000:user2 línea), pero no puedo editar ese archivo como usuario2. ¿Por qué es así?

Respuesta aceptada:

user2 necesita cerrar sesión y volver a iniciarla. Los permisos de grupo funcionan de esta manera:

  • Cuando inicia sesión, sus procesos tienen membresía de grupo en su grupo principal mencionado en /etc/passwd , más todos los grupos donde se menciona a su usuario en /etc/group . (Más precisamente, el pw_gid campo en getpw(your_uid) , además de todos los grupos de los que su usuario es miembro explícito. Más allá de /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 el ID de grupo efectivo del proceso y los otros grupos se convierten en sus ID de grupo complementarios.
  • Cuando un proceso realiza una operación que requiere pertenecer a un determinado grupo, como acceder a un archivo, ese grupo debe ser el ID de grupo efectivo o uno de los ID de grupo complementarios 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 los procesos en ejecución, es demasiado tarde. Por lo tanto, el usuario debe cerrar la 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 ).

Debajo del capó, un proceso solo puede perder privilegios (ID de usuario, ID de grupo, capacidades). El núcleo inicia el init proceso (el primer proceso después del arranque) que se ejecuta como root, y cada proceso desciende en última instancia de ese proceso¹. El login proceso (o sshd , o la parte de su administrador de escritorio que inicia sesión) todavía se ejecuta como root. Parte de su trabajo es eliminar los privilegios de raíz y cambiar a los usuarios y grupos adecuados.

Hay una única excepción:ejecutar un programa setuid o setgid. Ese programa recibe permisos adicionales:puede optar por actuar bajo varios subconjuntos de las membresías del proceso principal 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í funcionan programas como su y sudo pueden hacer su trabajo.

Relacionado:¿Cómo desactivar la funcionalidad de "pegar con el botón central del mouse" en todos los programas?

¹ Ocasionalmente 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.
² Salvo marcos de trabajo de seguridad multinivel como SELinux.


Linux
  1. Cómo agregar un usuario a un grupo en Linux

  2. Si cambio los permisos en un archivo Tar, ¿se aplicará eso a los archivos que contiene?

  3. Cómo administrar permisos/propiedades de archivos y directorios en Linux

  4. Linux, ¿por qué no puedo escribir aunque tengo permisos de grupo?

  5. Agregar usuario al grupo pero no reflejado cuando se ejecuta la identificación

Cómo agregar un usuario a un grupo en Linux

Cómo forzar la propiedad de usuarios/grupos de archivos en un recurso compartido de Samba

eliminando archivos pero el espacio en disco todavía está lleno

¿Con qué usuario deberían ejecutarse apache y PHP? ¿Qué permisos deben tener los archivos /var/www?

Cómo otorgar acceso de usuario no root a los archivos del dispositivo

¿Cómo funcionan los permisos de archivo para el usuario root?