Comment changer des permissions récursivement?
Assez souvent, je suis confronté à ce problème, par exemple, après avoir déplacé un dossier complet depuis une partition windows ou un CD. Quand on fait ce genre d'opération, toutes les permissions attribuées aux fichiers sont perdues et ils se retrouvent tous en accès libre et exécutables, pour le monde entier...
La question est simple: comment rendre tous ces fichiers en mode -rw------- (lecture et écriture pour le propriétaire seulement) et tous les dossiers en drwx------ (lecture, écriture et éxécution pour le propriétaire seulement) sans passer dans les dossiers un par un?
En fait, il suffit de quelques commandes, mais j'ai mis un moment à les trouver:
C'est tout!# cherche tous les dossiers (récursivement), et donne la
# permission d'exécution, lecture et écriture au propriétaire
find ./ -type d -exec chmod u+rwx {} ;
# cherche tous les dossiers (récursivement), et retire la permission
# d'exécution, lecture et écriture aux membres du groupe et reste du monde
find ./ -type d -exec chmod og-rwx {} ;
# cherche tous les fichiers (récursivement), et donne la permission
# de lire et écrire mais pas exécuter au propriétaire
find ./ -type f -exec chmod u+wr-x {} ;
# cherche tous les fichiers (récursivement) et retire tous les droits
# aux membres du groupe et reste du monde
find ./ -type f -exec chmod og-rwx {} ;
Voir aussi
- Changer les permissions par défaut (01/2005)
Edité et reformaté 12/2005
ZoneO, 22 mars 2004
Ben, le problème avec 'chmod -R' est de faire la différence entre un dossier et un fichier... a moins qu'il y ait un truc dont je n'ai pas conscience.
Jack, 05 février 2008
Il y a aussi le mode X (en majuscule) de chmod qui permet de rendre exécutable les répertoires mais pas les fichiers simples. Cf. man chmod
Pulp, 15 mars 2004
Personnellement j'aurais juste mis un chmod -R