Mascotte de Publicitem, agence de communication et publicité

PublicitemOui, publie si t’aimes !Téléphone pictogramme Conseil gratuit

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

Portrait de Patrice Grundmann
21
03
2015

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 :

  1. 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 :

  1. ll
  2. 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

  1. sudo chmod 2770 files/
  2. ll
  3. 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 : 

Soumis par Patrice Grundmann le sam, 21/03/2015 - 19:05

Ajouter un commentaire