web-dev-qa-db-fra.com

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

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

J'ai modifié les fichiers existants pour qu'ils regroupent mon groupe à l'aide de chgrp, mais les nouveaux fichiers toujours 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.

65
justintime

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 bits persistants et les autres bits d'autorisation de Linux:

SetGID, cependant, est un jeu de balle complètement différent. Lorsqu'un bit est 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.

105
lesmana

Définissez l'indicateur d'autorisation setgid sur les dossiers.

chmod g+s dirname
11
Daniel Beck

Cela pourrait 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 pas d'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
10
LukePH