Существует ли команда оболочки для рекурсивного предоставления разрешения на каталоги и файлы? - PullRequest
6 голосов
/ 10 марта 2009

Может кто-нибудь дать мне рекурсивную команду, которая пройдет через каталог и разрешит всем нормальным файлам разрешение 644 и все подкаталоги 755?

Я действительно устаю делать это вручную каждый раз, когда мне приходится что-то устанавливать на своем хосте. Я не знаю достаточно команды BASH (Shell?), Чтобы сделать это.

Ответы [ 4 ]

15 голосов
/ 10 марта 2009

Для этого есть опция X.

chmod a+X * -R

Это даст бит выполнения только каталогам, а не файлам. Чтобы установить 644, 755 соответственно одной командой, используйте:

chmod a=rX,u+w <files/dirs> -R
12 голосов
/ 10 марта 2009

Первая строка изменяет права доступа к файлу, а вторая изменяет права доступа к каталогу в активном каталоге и его подкаталогах.

find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755
3 голосов
/ 10 марта 2009

Использование имен символьных режимов вместо необработанных числовых разрешений:

chmod -R u=rwX,go=rX somedir

Флаг разрешения X устанавливает только каталоги или уже исполняемые файлы как исполняемые, флаг -R означает «рекурсивный» и применяет разрешения ко всему содержимому somedir.

2 голосов
/ 10 марта 2009

Нет, нет команды для рекурсивного изменения разрешений. Если бы была такая команда, это нарушило бы мантру Unix: «Делай что-то и делай хорошо».

Однако есть две команды : одна для повторения (find) и одна для изменения разрешений (chmod).

Итак, волшебная командная строка:

find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' +
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...