Как я могу сделать рекурсивный chmod только для каталогов?
Я хочу изменить разрешения для дерева в Centos 4, чтобы добавить разрешения на выполнение для всех каталогов рекурсивно из каталога. Если я использую обычный chmod, файлы, кроме каталогов, также изменяются:
chmod -R o+x /my/path/here
Как я могу влиять только на каталоги?
3 ответа
Бежать find
на -type d
(каталоги) с -exec
основной для выполнения chmod
только по папкам:
find /your/path/here -type d -exec chmod o+x {} \;
Чтобы убедиться, что он выполняет только на желаемых объектах, вы можете запустить только find /your/path/here -type d
первый; он просто распечатает найденные каталоги.
См. Примеры командной строки - 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
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"