chmod
peut réellement le faire lui-même ; le X
l'autorisation symbolique signifie "exécuter, si cela a du sens", ce qui signifie généralement sur les répertoires mais pas sur les fichiers. Ainsi, vous pouvez utiliser :
chmod -R u=rwX,go=rX /path/to/htdocs
Le seul problème potentiel est que si l'un des fichiers simples a déjà un jeu d'exécution, chmod
suppose que c'est intentionnel et le garde. S'il s'agit d'un problème potentiel et vous avez la version GNU de chmod
(c'est-à-dire que vous êtes sous Linux), vous pouvez l'obtenir pour supprimer toutes les autorisations d'exécution parasites comme ceci :
chmod -R a-x,u=rwX,go=rX /path/to/htdocs
Malheureusement, cette astuce ne fonctionne pas avec la version bsd (/macOS) de chmod
(Je ne suis pas sûr des autres versions). C'est parce que la version bsd applique le X
autorisation basée sur "le mode d'origine (non modifié)", c'est-à-dire s'il avait des bits d'exécution avant le a-x
la modification a été faite (voir le man
page).
Utilisez find
pour rechercher des répertoires et leur appliquer chmod :
find -type d | xargs chmod 775
Utilisez le type f
pour le fichier :
find -type f | xargs chmod 775
Utilisez le -type
de find option pour limiter les actions aux fichiers et répertoires. Utilisez le -o
option pour spécifier des actions alternatives pour différents types, vous n'avez donc qu'à exécuter find
une fois, plutôt que séparément pour chaque type.
find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +