Je dois modifier les autorisations du répertoire htdocs
dans Apache pour un certain groupe et avec certains accès en lecture/écriture/exécution.
Les répertoires doivent disposer de 775 autorisations et les fichiers, de 664.
Si je fais un 664 récursif à la htdocs
, alors tous les fichiers et répertoires changeront à 664.
Je ne veux pas changer les répertoires manuellement.
Est-il possible de modifier uniquement les fichiers ou les répertoires?
Utilisez l'option -type
de find pour limiter les actions aux fichiers et aux répertoires. Utilisez l'option -o
pour spécifier d'autres actions pour différents types. Vous ne devez donc exécuter que 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 {} +
chmod
peut réellement le faire lui-même; La permission symbolique X
signifie "exécuter, si cela a un sens", ce qui signifie généralement sur des répertoires mais pas sur des fichiers. Donc, vous pouvez utiliser:
chmod -R u=rwX,go=rX /path/to/htdocs
Le seul problème potentiel est que, si l'un des fichiers ordinaires a déjà été exécuté, chmod
suppose qu'il est intentionnel et le conserve.
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
La réponse de Gordon ci-dessus est correcte, mais si vous essayez de verrouiller l'accès à une arborescence de répertoires, les scripts qui sont exécutables pour le propriétaire sont également exécutés par celui qui a reçu le X majuscule.
En utilisant
find -type d exec chmod 775 {} +
ou
find -type d exec chmod 755 {} +
est plus sûr.
essayer:
find htdocs -type d -exec chmod 775 {} +
J'utilise quelque chose de similaire à la solution fournie par Gordon:
chmod -R ug=rw,o=r,a+X /path/to/folder/
Il doit toujours définir 775 pour les dossiers et 664 pour les fichiers, même si l'autorisation d'exécution a déjà été définie pour certains fichiers.