Permiso denegado para cambiar gid (grupo) de un file que tengo

Parece que todavía echo de less algunas cosas sobre la forma en que funcionan los permissions. Estoy en un sistema Debian 7 por cierto. justo ahora tengo este file que descargué y pertenece a myuser:myuser , que es usuario y grupo, está configurado para mí. También reside en mi directory $HOME ya que es donde lo descargué.

Hasta aquí todo bien. Ahora quiero compartir este file con otros usuarios de la PC y para eso quiero cambiar la propiedad del grupo del grupo para agrupar a los "usuarios". 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 confundido sobre lo que está pasando con los permissions. ¿Puede alguien explicar

Es probable que su usuario no sea miembro del grupo de users , por lo que no tiene derecho a entregar un file 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 file o el usuario con los privilegios adecuados puede cambiar el propietario o grupo de un file.

Algunas implementaciones restringen el uso de chgrp a un usuario con los privilegios apropiados cuando el grupo especificado no es el ID de grupo efectivo o uno de los ID de grupo suplementarios del process de llamada.

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

Tradicionalmente, en los sistemas compartidos, tiene un grupo de users al que pertenecen todos los usuarios normales y que es el grupo principal de cada usuario. De esta forma, los files creados son propiedad del grupo de users y todos los usuarios pueden leerlos.

De todos modos, dado que esa no es la forma en que las distribuciones basadas en Debian se configuran en estos días, la forma de otorgarle acceso a un usuario específico a su file sería a cualquiera de los dos.

  1. Cambie la propiedad del grupo del file / directory a un grupo del que usted y el otro usuario son miembros;

  2. Simplemente cambie los permissions del file / directory 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 directory sea accesible para todos.

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

El problema de poder cambiar la propiedad del grupo a grupos extranjeros es bastante trivial: si el sistema de files en el que reside el file tiene habilitadas las cuotas grupales, un usuario con una intención maliciosa podría simplemente llenar la cuota del grupo extranjero, imposibilitando a los usuarios con este grupo como ID de grupo principal para crear más files. Esto podría afectar fácilmente incluso los processs que ya se están ejecutando y hacer que se mueran debido a un "disco completo".

Para evitar su problema, hay (al less) dos posibilidades: en primer lugar, puede pedirle al superusuario de su sistema que agregue el grupo objective deseado a la list de grupos suplementarios de su count. Por supuesto, esto solo tiene sentido si no tienes una relación con este grupo.

La otra forma de no tener que hacer que el file sea escribible en todo el mundo, lo que seguramente no se desea, es usar ACL para otorgar permissions de lectura y escritura al grupo deseado:

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

Puede ser porque el bit inmutable está configurado. Obtenga la list de attributes de file ejecutándose

 lsattr /path/to/your/file 

si aparece, se establece el atributo inmutable y nadie puede modificar el file (incluso la raíz).

Para eliminar el atributo debe ejecutar como root

 chattr -i /path/to/your/file 

Para ver más attributes del sistema de files, lea las páginas man

 man chattr man lsattr