Permiso denegado para cambiar gid (grupo) de un archivo que poseo


17

Parece que todavía extraño algunas cosas sobre la forma en que funcionan los permisos. Estoy en un sistema debian 7 por cierto. ahora tengo este archivo que descargué y al que pertenece myuser:myuser, es decir, tanto el usuario como el grupo están configurados para mí. También reside en mi $HOMEdirectorio ya que es donde lo descargué.

Hasta aquí todo bien. Ahora quiero compartir este archivo con algunos otros usuarios de la PC y para eso quiero cambiar la propiedad del grupo del archivo a "usuarios" del grupo. sin embargo eso falla:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

Y el contenido de la carpeta es:

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

Estoy confuso sobre lo que está sucediendo con los permisos. Alguien puede explicar


se /xmas_carolmonta samba / nfs?
Rahul Patil

La solución es setfacl(si el sistema de archivos tiene ACL). ver unix.stackexchange.com/questions/101263/…
ctrl-alt-delor

Tuve el mismo error hasta que me di cuenta de que acababa de agregarme a ese grupo. En otras palabras, tuve que cerrar sesión, volver a iniciar sesión, para que los cambios surtan efecto.
Jonathan

Respuestas:


22

Su usuario probablemente no sea miembro del usersgrupo, por lo que no tiene derecho a entregar un archivo a ese grupo. Para ilustrar:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

Este comportamiento se menciona en las especificaciones POSIX :

Solo el propietario de un archivo o el usuario con los privilegios apropiados puede cambiar el propietario o grupo de un archivo.

Algunas implementaciones restringen el uso de chgrp a un usuario con los privilegios apropiados cuando el grupo especificado no es la ID de grupo efectiva o una de las ID de grupo suplementarias del proceso de llamada.

La razón principal de esto es que si no eres miembro de un grupo, no deberías poder modificar a qué tiene acceso ese grupo. Esta respuesta sobre chownpermisos también es relevante.

Tradicionalmente, en los sistemas compartidos, tiene un usersgrupo al que pertenecen todos los usuarios regulares y ese es el grupo principal de cada usuario. De esa forma, los archivos se crean propiedad del usersgrupo y todos los usuarios pueden leerlos.

De todos modos, dado que esa no es la forma en que se configuran las distribuciones basadas en Debian en estos días, la forma de dar acceso a un archivo a un usuario específico sería

  1. Cambie la propiedad del grupo del archivo / directorio a un grupo del que tanto usted como el otro usuario sean miembros;

  2. Simplemente cambie los permisos del archivo / directorio en consecuencia:

    $ chmod 755 /home/terdon
    $ ls -ld /home/terdon
    drwxr-xr-x 170 terdon terdon 491520 Apr 20 13:43 /home/terdon/
    

    Eso hará que el directorio sea accesible para todos.


4

En UNICes recientes (y "reciente" tiene un significado bastante amplio aquí), no puede cambiar la propiedad del grupo de archivos a un grupo del que no es miembro. Las versiones heredadas de diferentes sabores de UNIX respaldaban esto, para casos de uso como el suyo, pero resultó ser un problema de seguridad.

El problema de poder cambiar la propiedad del grupo a grupos extranjeros es bastante trivial: si el sistema de archivos en el que reside el archivo tiene cuotas de grupo habilitadas, un usuario con intenciones maliciosas podría simplemente llenar la cuota del grupo extranjero, lo que hace imposible para los usuarios con este grupo como ID de grupo principal para crear más archivos. Esto podría afectar fácilmente incluso los procesos que ya se están ejecutando y provocar su muerte debido al "disco lleno".

Para evitar su problema, existen (al menos) dos posibilidades: Primero, puede pedirle al superusuario de su sistema que agregue el grupo objetivo deseado a la lista de grupos suplementarios de su cuenta. Por supuesto, esto solo tiene un sentido limitado si no tienes una relación con este grupo.

La otra forma de no tener que hacer que el archivo se pueda escribir en todo el mundo, lo que seguramente no se desea, es usar ACL para otorgar al grupo deseado permisos de lectura y escritura:

$ setfacl -m group:thegroupsname:rwx the_file(s)

no tiene que dar ejecutar (en un archivo normal), y probablemente no quiera regalar permiso de escritura.
ctrl-alt-delor

2

Puede ser porque el bit inmutable está establecido. Obtenga la lista de atributos de archivo en ejecución

lsattr /path/to/your/file

si i aparece, entonces el atributo inmutable se establece y nadie puede modificar el archivo (incluso raíz).

Para eliminar el atributo debes ejecutar como root

chattr -i /path/to/your/file

Para ver más atributos del sistema de archivos, lea las páginas del manual

man chattr
man lsattr

Buen punto, pero a partir de la pregunta, supongo que el interrogador no tiene derechos de superusuario, que debe borrar la marca inmutable (al menos en todos los sistemas de archivos que llevé tanto tiempo). Además, dado que acaba de extraer un archivo, lo más probable es que no sea el problema, ya que el archivador usado habría necesitado configurarlo (mismo problema).
Andreas Wiese

0

Si se había agregado al grupo en este momento, asegúrese de cerrar sesión y volver a iniciarla para asegurarse de que los cambios surtan efecto.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.