29

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

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

Как я могу влиять только на каталоги?

3 ответа3

45

Запустите find на -type d (каталоги) с первичным -exec чтобы выполнить chmod только для папок:

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

Чтобы убедиться, что он работает только с нужными объектами, вы можете сначала запустить find /your/path/here -type d ; он просто распечатает найденные каталоги.

15

См. Примеры командной строки - 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
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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .