Changer récursivement le chmod des dossiers seulement
Changer le chmod seulement des dossiers en 755, sans toucher aux fichiers :
find /path -type d -exec chmod 755 {} +De ma même manière, pour changer uniquement le chmod des fichiers :
find /path -type f -exec chmod 644 {} +Avec beaucoup de dossiers/fichiers
Si le nombre de dossiers (ou fichiers) est très important, il est préférable d’utiliser une des méthodes suivantes :
# Méthode avec un sous-process
chmod 755 $(find /path -type d)
# Méthode avec xargs
find /path -type d -print0 | xargs -0 chmod 755 Ces deux méthodes évitent d’executer chmod pour chaque entrée.
Permissions 755 sur les dossiers, 644 sur les fichiers
Généralement, on souhaite juste attribuer le flag d’exécution/recherche x aux dossiers mais pas aux fichiers. Dans ce cas, il existe une méthode encore plus efficace, en utilisant X (au lieu de x) :
execute/search only if the file is a directory or already has execute permission for some user (X)
Cela donne donc :
chmod -R u=rwX,go=rX /pathExplications détaillées :
Xn’applique les droits d’exécution que sur les dossiers, pas les fichiers ;u=rwX: Users peuvent lire, écrire et exécuter ;go=rX: Group et Others peuvent lire et exécuter, mais pas écrire.
Attention, cela ne supprimera pas des flags éventuels d’exécution x sur les fichiers (si quelqu’un a fait un chmod 777 par exemple). En effet, le flag X ne retire pas le droit d’exécution sur un fichier qui le possède déjà !
Pour le retirer :
chmod -R ugo-x,u=rwX,go=rX /path