Skip to content

Shell tricks - Fixer les permissions d'une arborescence

Je constate souvent que les utilisateurs et/ou développeurs non Unixiens ayant besoin de travailler sous UNIX, Linux ou BSD ont tendance à ne pas fixer correctement les permissions des répertoires et des fichiers, parfois par fainéantise, mais le plus souvent par méconnaissance de la marche à suivre.

Voici donc un petit trick pour ceux qui en ont besoin.

Pourquoi ?

Le plus souvent ce sont des développeurs qui ont besoin de dézipper une archive récupérée de on ne sait où, ou de récupérer des fichier depuis une machine Windows ou un serveur SMB/CIFS, et résultat les permissions sont le plus souvent incorrectes (en général 0777, soit rwxrwxrwx).

Lorsque je leur demande de fixer les permission des répertoires et fichiers avec des valeurs plus correctes, soit 0755 pour les répertoires et 0644 pour les fichiers, certains sont un peu à la lutte.

Le trick

Pour arriver au résultat attendu en deux coups de cuillerée à pot, nous allons utiliser la commande « find » couplée à la commande « chmod ».

La première commande demande à « find » de trouver récursivement tous les répertoires et sous-répertoires (avec l'option « -type d ») à partir de « pathname » et d'appeler la commande « chmod 755 » (avec l'option « -exec ») avec le nom représenté par les deux accolades « {} ». Le « \; » à la fin signifiant la fin de commande à appeler.

find 'pathname' -type d -exec chmod 755 {} \;

La seconde commande demande à « find » de trouver récursivement tous les fichiers (avec l'option « -type f ») à partir de « pathname » et d'appeler la commande « chmod 644 » (avec l'option « -exec ») avec le nom représenté par les deux accolades « {} ». Le « \; » à la fin signifiant la fin de commande à appeler.

find 'pathname' -type f -exec chmod 644 {} \;

On peut fixer plus précisemment les permissions en fonction du type de fichier, par exemple rendre exécutable les scripts shell, en spécifiant l'option « -name » à la commande « find ».

find 'pathname' -type f -name "*.sh" -exec chmod 755 {} \;

Il existe évidemment d'autres façons de faire, notamment en utilisant la commande « xargs », mais je vous ai exposé la méthode que j'utilise quotidiennement.

What else ?

Voilà, c'est tellement simple et efficace que même les plus noobs n'auront plus d'excuses concernant des mauvaises permissions.

Une coquille, une faute ?

Vous constatez une coquille, une faute d'orthographe ou de grammaire ? Dites-le moi par mail !

Rétroliens

Pas de rétroliens

Commentaires

Afficher les commentaires en Vue non groupée | Vue groupée

Pas de commentaires

L'auteur n'a pas autorisé l'ajout de commentaires pour ce billet.

Ajouter un commentaire


Pour éviter le spam par des robits automatisés (spambots), merci d'entrer les caractères que vous voyez dans l'image ci-dessous dans le champ de fomulaire prévu à cet effet. Assurez-vous que votre navigateur gère et accepte les cookies, sinon votre commentaire ne pourra pas être enregistré.
CAPTCHA

Form options

Les commentaires postés doivent être approuvés avant d'être affichés dans le blog.