Transmettre les droits du groupe d'un répertoire aux fichiers créés à l'intérieur de celui-ci, ou le sgid

Profile picture for user Patrice Grundmann
Soumis par Patrice Grundmann le 21/03/2015
Image-billet-blog
La question des droits sous GNU/Linux

Lorsqu'on copie/colle une image dans un répertoire sur une machine de type Unix (GNU/Linux), et non de type Windows car Windows est incapable de gérer ces droits là (shame), plutôt que passer par un script d'upload d'un site internet, on pourrait être amené à changer les droits sur ce seul fichier via un « chown ». Exemple :

chown monuser:www-data monimage.png

Mais il y a plus intelligent à faire. Il s'agit en fait de donner le « sgid » (ou « setgid ») qui concerne les programmes et les répertoires :
Un programme lancé avec ce droit « sgid » sera exécuté avec les droits du groupe du programme et non les droits du groupe de l'utilisateur qui l'a lancé (ex: /usr/bin/write ou /usr/bin/wall). Dans notre cas, ça ne nous intéresse pas.
Mais par contre, un fichier créé dans un répertoire ayant le droit « sgid » aura pour groupe le groupe du répertoire et pas celui de l'utilisateur qui a créé le fichier.
Dans notre exemple, le répertoire de nos images a comme droits ce qui suit :

ll
drwxrwx--- 19 monuser www-data 12288 Mar 21 07:40 files/

Autrement traduit, en octal, files est en : 770
Nous allons changer ça par, en octal toujours, par : 2770

sudo chmod 2770 files/
ll
drwxrws--- 19 monuser www-data 12288 Mar 21 07:40 files/

Notez le s minuscule en place du x précédemment : le répertoire a bien le sgid actif, et transmettra le nom du groupe à tous les fichiers créés dorénavant ou déplacés manuellement à l'intérieur.
Pour en savoir plus sur les droits Unix, je vous conseille cette ressource.

Catégorie

Ajouter un commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les lignes et les paragraphes vont à la ligne automatiquement.