Как я могу сделать рекурсивный 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сначала; он просто распечатает найденные каталоги.


Не могли бы вы объяснить, что {} \; делает?
Srekel

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должна работать для OP.
Даниэль Бек

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.