S'assurer que les nouveaux fichiers d'un répertoire appartiennent au groupe

67

Je souhaite créer un répertoire partagé lorsqu'un certain nombre d'utilisateurs (tous appartenant à, par exemple, mygroup) peuvent créer et modifier des fichiers. Je souhaite que tous les fichiers de ce répertoire et de ce sous-répertoire appartiennent à mon groupe

J'ai modifié les fichiers existants pour que le groupe mon groupe soit utilisé chgrp, mais les nouveaux fichiers encore créés appartiennent au groupe principal de l'utilisateur. Existe-t-il un moyen de s’assurer que les nouveaux fichiers appartiennent au groupe sans exécuter répétitivement chgrp.

juste à temps
la source

Réponses:

108

Vous voulez définir le bit SetGID.

chmod g+s dir

Tous les nouveaux fichiers créés dans le répertoire auront le groupe défini sur le groupe du répertoire.

Un article de blog de superutilisateur expliquait les sticky bits et les autres permissions de Linux:

SetGID, cependant, est un jeu de balle complètement différent. Lorsqu'un bit a le bit SetGID défini dans un répertoire et qu'un fichier est créé dans ce répertoire, la propriété du groupe du fichier est automatiquement modifiée pour devenir le groupe du répertoire.

lesmana
la source
1
Merci. La référence est utile. décrit la commande umask qui fait partie de l'image
juste à
4
Qu'en est-il de la création d'un sous-répertoire dans le répertoire initial qui appartient également au groupe du répertoire parent? Est-ce possible?
daaxix
@ La réponse de LukePH ci-dessous est cruciale pour ne pas être confondu lorsque cela échoue en silence: utilisez sudo
Rhubarb le
11

Cela risque de coincer quelques personnes dans setgid. Si le groupe du dossier est différent du vôtre, vous devrez peut-être exécuter chmod en tant que root, mais vous n'obtiendrez aucune erreur indiquant que vous devez le faire.

sans 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

avec 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
la source