Як я можу робити рекурсивний chmod лише в каталогах?


31

Я хочу змінити дозволи на дереві на Centos 4, щоб додати дозволи для виконання всіх каталогів рекурсивно з каталогу. Якщо я використовую звичайний chmod, інші файли, крім каталогів, також змінюються:

chmod -R o+x /my/path/here

Як я можу впливати лише на каталоги?

Відповіді:


48

Запустіть findдалі -type d( каталоги ) з -execосновним, щоб виконати chmodєдину в папках:

find /your/path/here -type d -exec chmod o+x {} \;

Щоб бути впевненим, що він виконує його лише на потрібних об'єктах, ви можете запустити лише find /your/path/here -type dспочатку; він просто роздрукує знайдені в ньому каталоги.


Чи можете ви пояснити, що {} \; робить?
Срекель

2
@Srekel дивіться цю відповідь askubuntu.com/questions/339015/…
MADforFUNandHappy

17

Дивіться приклади командного рядка - chmod у Вікіпедії.

chmod -R a-x+X directory    remove the execute permission on all files in 
                            a directory tree, while allowing for directory browsing.

Як додав Даніель: це має працювати у вашому випадку:

chmod -R o+X directory

Це вплине на поточні дозволи файлів у каталогах.
scriptmonster

@scriptmonster цитований рядок є неправильним для цього випадку, але він chmod -R o+X directoryповинен працювати для ОП.
Даніель Бек

1
Для тих, хто цікавиться різницею, як я, це те, що X також застосує дозволи на виконання до будь-якого файлу, у якого вже встановлений принаймні один біт дозволу на виконання (або користувач, група чи інший). У загальному випадку прийнята відповідь краще.
ixe013

1
find /home/mydir -type d | xargs chmod ugo+rx

Це працює на CentOS6, чого вищевказаний знахід -exec не робить. По суті, він просто передає список каталогів команді xargs, яка надсилає їх до chmod. Потім chmod встановлює універсальне читання та виконання (пошук) у каталогах. Для цього всі користувачі в домашніх умовах використовують sudo:

sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.