Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/01/2008, à 11:13

arnaud741

changement récursif (amélioré) de permissions

Salut à  tous et à  toutes !

Une petite astuce que j'ai utilisée hier... Certes, cette astuce est sans doute connue des plus expérimentés en scripts shell parmi nous, mais il me semble qu'elle pourrait se révéler utile aux débutants !

Le problème est le suivant : comment modifier récursivement des permissions en fonction du type de fichiers ? Par exemple, comment mettre tous ses dossiers en chmod 750 et tous ses fichiers en chmod 640 ? En effet, un chmod -R s'applique autant aux fichiers qu'aux dossiers et ne se révèle pas assez "pointu"...

La solution, pour les dossiers : find -type d -print0 | xargs -0 chmod 750
La solution, pour les dossiers : find -type f -print0 | xargs -0 chmod 640

Il me semble que ces 2 commandes sont limpides et peuvent presque se passer d'explications. La seule chose qui est un peu plus subtile, ce sont les options -print0 pour la commande find et -0 pour la commande xargs : elles sont tout simplement destinées à  échapper les caractères spéciaux (espaces et autres), pour éviter des problèmes à  la commande chmod !

Hors ligne

#2 Le 13/01/2008, à 16:11

mpop

Re : changement récursif (amélioré) de permissions

Hello,

Merci pour l'astuce!

Pour pouvoir l'utiliser plus facilement, j'ai créé des alias dans mon fichier .bash_aliases:

# Quick chmod
alias rdirmod='find -type d -print0 | xargs -0 chmod'
alias rfilemod='find -type f -print0 | xargs -0 chmod'
alias rmod1='find -type d -print0 | xargs -0 chmod 755 && find -type f -print0 | xargs -0 chmod 644'
alias rmod2='find -type d -print0 | xargs -0 chmod 700 && find -type f -print0 | xargs -0 chmod 600'

J'utilise les deux premiers en leur passant le détail des permissions en paramètre, par exemple:

rdirmod 755

Les deux derniers sont «pré-configurés» pour des permissions 755/644 (dossiers/fichiers) et 700/600.

Récupérer des fichiers sur une clef USB en FAT 32 et leur assigner les permissions qui vont bien va devenir beaucoup plus facile. smile

Une question pour finir: j'ai remarqué que lorsque j'exécutais une de ces commandes depuis un dossier, cela changeait les permissions des fichiers et dossiers contenus dans le dossier courant mais aussi celles du dossier courant lui-même.

Pour ne pas prendre en compte le dossier courant, il faudrait procéder ainsi, non?

find * -type d -print0 | xargs -0 chmod 750
find * -type f -print0 | xargs -0 chmod 640

Je viens de tester et ça a l'air d'être le cas. smile

Du coup je suppose que je peux corriger mes alias ainsi:

# Quick chmod
alias rdirmod='find * -type d -print0 | xargs -0 chmod'
alias rfilemod='find * -type f -print0 | xargs -0 chmod'
alias rmod1='find * -type d -print0 | xargs -0 chmod 755 && find * -type f -print0 | xargs -0 chmod 644'
alias rmod2='find * -type d -print0 | xargs -0 chmod 700 && find * -type f -print0 | xargs -0 chmod 600'

Dernière modification par mpop (Le 13/01/2008, à 16:14)


« Covert prestige », c'est un terme de sociolinguisitique. William Labov pawaa!

Hors ligne