Pour donner l'autorisation d'exécution (recherche) aux répertoires, mais pas aux fichiers, utilisez :
chmod -R +X .
Pour attribuer toutes les autorisations comme dans votre exemple, utilisez :
chmod -R u=rwX,g=rX,o= .
-R
modifie les fichiers et les répertoires de manière récursive, tandis que +X
définit l'exécution/la recherche uniquement si le fichier est un répertoire ou a déjà l'autorisation d'exécution pour un utilisateur. r
et w
sont bien sûr pour la lecture et l'écriture, respectivement.
Mode X
(supérieur x ) est documenté à la fois dans la page de manuel traditionnelle et dans la documentation d'informations.
Il devrait également fonctionner sur d'autres systèmes de type Unix, par ex. FreeBSD, NetBSD ou OpenBSD. Citant la page de manuel chmod(1) de The Open Group Base Specifications Issue 7, édition 2018 :
Le X Le symbole perm a été adopté à partir des systèmes basés sur BSD car il fournit les fonctionnalités généralement souhaitées lors de l'exécution récursive (-R option) modifications. Une fonctionnalité similaire n'est pas fournie par find utilitaire. Versions BSD historiques de chmod , cependant, n'a pris en charge que X avec op + ; il a été étendu dans ce volume de POSIX.1-2017 car il est également utile avec op =. (Il a également été ajouté pour op - même s'il duplique x , dans ce cas, car il est intuitif et plus facile à expliquer.)
man 1 chmod
info '(coreutils)Conditional Executability'
Si vous voulez le faire de manière récursive, c'est-à-dire , aux répertoires dans les répertoires dans les répertoires, la commande à utiliser est :
find /path/to/starting/directory -type d -exec chmod +x {} \;
Cela localise tous et uniquement les sous-répertoires (-type d flag) du répertoire /path/to/starting/directory, puis effectue le changement requis d'autorisation d'exécution pour chacun d'eux. L'espace avant \; est obligatoire.