Modifier les droits sur une arborescence de dossiers et fichiers

But des commandes : modifier les droits sur une arborescence en différenciant les droits sur les dossiers et les fichiers.

, par clem

Lorsque l’on doit modifier les permissions [1] sur une arborescence de dossiers et fichiers, la méthode "simple" consiste à utiliser la commande (par exemple ici pour donner des permissions de type 2775)

  1. chmod -R 2775 /chemin/arborescence/a/modifier

c’est à dire utiliser l’option -R de la commande chmod qui permet de propager la modification des droits sur l’ensemble des dossiers et fichiers de l’arborescence.
Cette méthode à l’inconvénient que fichiers et dossiers héritent des même permissions alors que si on souhaite (en général) pouvoir autoriser l’accès aux dossiers, il n’est pas souhaitable de mettre tous les fichiers de l’arborescence en mode "exécutable" : exprimé en octal, cela revient à vouloir donner la permission 7 (x) pour les dossiers alors que l’on veut donner la permission 6 (-) pour les fichiers.

Pour pouvoir mettre des droits différents sur les dossiers et les fichiers d’une arborescence on peut donc utiliser les commandes suivantes (exemple pour mettre 2775 sur les dossiers et 664 sur les fichiers) :

  1. chemin='/chemin/arborescence/a/modifier'
  2. find ${chemin} -type f -print0 | xargs -0 chmod 0664
  3. find ${chemin} -type d -print0 | xargs -0 chmod 2775

Télécharger

c’est à dire utiliser la commande find avec l’option -type d pour les dossiers ou -type f pour les fichiers afin de sélectionner uniquement dossiers ou fichiers et de rediriger le résultat de cette commande vers la commande chmod avec les permissions appropriées au type sélectionné.

Notes

[1voir Wikipedia Permissions_UNIX pour les explications sur les permissions