Asegurar que los nuevos archivos en un directorio pertenezcan al grupo

67

Quiero crear un directorio compartido cuando varios usuarios (todos pertenecen a digamos mygroup) pueden crear y editar archivos. Me gustaría que todos los archivos en este directorio y subdirectorio pertenezcan a mygroup

He cambiado los archivos existentes para usar el grupo mygroupchgrp , pero todavía se crean nuevos archivos que pertenecen al grupo primario del usuario. ¿Hay alguna manera de garantizar que los nuevos archivos pertenezcan al grupo sin ejecutar repetidamente chgrp.

justo a tiempo
fuente

Respuestas:

108

Desea establecer el bit SetGID.

chmod g+s dir

Todos los archivos nuevos creados en el directorio tendrán el grupo establecido en el grupo del directorio.

Una publicación de blog de superusuario explicó los bits fijos y otros bits de permiso de Linux:

SetGID, sin embargo, es un juego de pelota completamente diferente. Cuando un directorio tiene el bit SetGID establecido y se crea un archivo dentro de ese directorio, la propiedad del grupo del archivo se modifica automáticamente para ser el grupo del directorio.

lesmana
fuente
1
Gracias. La referencia es útil. describe el comando umask que forma parte de la imagen
solo
44
¿Qué pasa con la creación de un subdirectorio en el directorio inicial que también pertenece al grupo del directorio principal? es posible?
daaxix
La respuesta de @ LukePH a continuación es crucial para no confundirse cuando esto falla en silencio: use sudo
Ruibarbo
11

Esto podría hacer que algunas personas se atasquen con setgid, si el grupo de la carpeta es diferente al suyo, es posible que deba ejecutar chmod como root, pero no obtendrá ningún error que indique que necesita hacer esto.

sin sudo

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                     # no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo        # and the group is set wrong

con sudo

$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo # and the group is set right
LukePH
fuente