Je souhaite modifier les autorisations sur une arborescence sur Centos 4 pour ajouter des autorisations d'exécution pour tous les répertoires de manière récursive à partir d'un répertoire. Si j'utilise chmod normal, les fichiers autres que les répertoires sont également modifiés:
chmod -R o+x /my/path/here
Comment puis-je affecter uniquement les répertoires?
Exécutez find
sur -type d
( répertoires ) avec le -exec
primaire pour exécuter la chmod
uniquement sur les dossiers:
find /your/path/here -type d -exec chmod o+x {} \;
Pour être sûr qu'il ne l'exécute que sur les objets souhaités, vous pouvez d'abord exécuter uniquement find /your/path/here -type d
; il va simplement imprimer les répertoires qu'il trouve.
Voir Exemples de ligne de commande - chmod sur Wikipedia.
chmod -R a-x+X directory remove the execute permission on all files in
a directory tree, while allowing for directory browsing.
Comme l'a ajouté Daniel: cela devrait fonctionner dans votre cas:
chmod -R o+X directory
find /home/mydir -type d | xargs chmod ugo+rx
Cela fonctionne sur CentOS6, ce que la recherche ci-dessus -exec ne fait pas. Fondamentalement, il ne fait que diriger la liste des répertoires vers la commande xargs qui les envoie à chmod. Le chmod définit ensuite une lecture et une exécution universelles (recherche) sur les répertoires. Pour ce faire, tous les utilisateurs à la maison utilisent Sudo:
Sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"