Le 02/03/2015 21:52, Vincent a écrit :
Bonsoir,
Bonsoir,
ça, c'est bien, mais avoir un répertoire où tous les fichiers appartiennent au groupe, même après application de tes commandes, avec les droits en lecture/écriture c'est mieux!
Pour avoir ce type de comportement avec les permissions UNIX classiques, il faut placer un bit « Setgid » sur le répertoire, avec la commande `chmod g+s <mon répertoire>`. Attention en revanche à ne pas utiliser le paramètre `-R` pour avoir un comportement récursif : il définirait le Setgid sur les fichiers ce qui créerait un tout autre comportement non voulu ici. Plutôt utiliser une commande du type `find <mon répertoire> -type d -exec chmod g+s {} ;` qui ne va sélectionner que les répertoires dans <mon répertoire> (et lui même).
Ensuite, pour conserver les permissions de lecture/écriture pour le groupe, c'est une autre affaire. Cela dépend de l'`umask` de l'utilisateur. Je ne vais pas m'attarder sur ce point, mais sa valeur par défaut est généralement `0022` (exécuter la commande `umask` pour confirmer), et pour appliquer les permissions `rwx` au groupe sur les répertoires et `rw-` au groupe sur les fichiers, il faut une valeur de `0002`, qu'on peut redéfinir pour chaque utilisateur concerné (dans le `.bashrc` par exemple) avec la commande `umask 0002`. ATTENTION ! Cette dernière manipulation modifie toutes les permissions par défaut des nouveaux fichiers créés par l'utilisateur ! Ce n'est donc pas une bonne solution concernant la sécurité…
J'avais tenté cela avec une ACL, mais le fonctionnement était aléatoire, généralement, un nouveau fichier créé respectait le format voulu, par contre, un fichier copié à partir d'une partition FAT (genre clé USB) prenait la propriété+groupe de celui qui avait fait la copie...
Avec les « vraies » ACL de Linux, on peut se débrouiller pour obtenir le comportement voulu, et sans l'inconvénient majeur de la méthode précédente. Cette méthode est peut être plus adaptée, mais plus difficile à mettre en place et requière une bonne maitrise des permissions UNIX. De plus il faut que le système de fichier concerné soit monté avec l'option `acl` dans le fstab. Un petit tutoriel pratique pour comprendre comment ça fonctionne : http://openclassrooms.com/courses/les-acl-access-control-lists-sous-linux (attention aux émoticônes sur cette page qui se sont insérées par mégarde dans les lignes de commande)
Ici la section nous concernant est « Doits par défaut et héritage », plus précisément pour définir des droits par défaut sur le répertoire voulu, qui seront hérités par ses enfants. Nous utiliserions donc une commande du type : `setfacl -Rdm g:<mongroupe>:rwx <mon répertoire>` Ici nous voulons évidemment définir les droits récursivement (avec `-R`), mais attention, cela définirait non seulement le droit d'exécution sur les répertoire (en réalité la possibilité de les traverser) mais aussi sur les fichiers, ce que nous ne voulons pas forcément. Nous pouvons donc utiliser la même méthode que précédemment avec la commande find : `find <mon répertoire> -type d -exec setfacl -dm g:<mongroupe>:rwx {} ;` `find <mon répertoire> -type f -exec setfacl -dm g:<mongroupe>:rw {} ;` On notera par ailleurs que la création de nouveaux fichiers donnera tout de même par défaut au groupe la permission d'exécution. Je n'ai pas de solution à ce problème, peut être une option particulière dans l'ACL ou de setfacl, ou quelque chose avec le mask.
Comme indiqué à la fin du tutoriel, les commandes `cp` et `mv` sont capables de conserver les ACLs du fichier *source*. Ce n'est donc pas ce que nous voulons, le paramètre `-a` n'est donc pas à utiliser. Les ACL du répertoire de destination seront automatiquement appliquées au fichier copié/déplacé à l'intérieur.
-- //piernov