web-dev-qa-db-fra.com

Linux: Définir les autorisations uniquement sur les répertoires

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?

15
radicaled

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 {} +
21
Barmar

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.

40
Gordon Davisson

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
4
Amit

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.

2
MartinMlima

essayer:

find htdocs -type d -exec chmod 775 {} +
1
RicardoE

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.

0
genna