Вы не можете. Вам нужны две команды.
find ./my_web_app_project -type d -exec chmod 755 {} \;
find ./my_web_app_project -type f -exec chmod 644 {} \;
Редактировать:
См. Ответ G-Man, так как он намного более правильный.
Один из способов сделать именно то, что вы хотите, с помощью одной команды find
-
find my_web_app_project '(' -type f -exec chmod 644 {} ';' ')' -o '(' -type d -exec chmod 755 {} ';' ')'
-o
означает ИЛИ.
Эта команда обрабатывает все объекты в дереве проекта
, которые относятся к типу «файл» или тип «каталог»,
, и выполняет различные команды, в зависимости от которых Типа каждый объект есть.
Вы можете сделать это немного более эффективным
, заменив точки с запятой ( ';'
) знаками плюс ( +
);
это говорит find
для однократного запуска chmod 644
со всеми именами простых файлов в качестве аргументов,
и для запуска chmod 755
один раз, со всеми именами каталогов в качестве аргументов.
Между прочим, вам не нужно говорить ./
ни для чего, кроме запуска программы в текущем каталоге
(хотя иногда удобный
для работы с файлами, имена которых начинаются с некоторых специальных символов).
Интересно, как теперь выглядят ваши разрешения
(перед запуском рекурсивного древовидного chmod
).
Обычно для файлов не включаются биты разрешения на выполнение
, если только они не являются исполняемыми программами,
или вы случайно не сделали что-то вроде chmod -R 755
.
Для каталогов обычно не отключаются биты разрешения на выполнение
, если вы не сделали что-то катастрофическое, например chmod -R 644
.
Если вы сильно испортили права доступа
из-за того, что вы выполнили опрометчивую chmod -R
с числовым режимом,
игнорируйте этот раздел {{1 }} и придерживайтесь команды в начале этого ответа.
Но если ваши разрешения в целом нормальные, и вы просто хотите ввести стандарт разрешений на чтение / запись для пользователя, и разрешений только на чтение для все остальные (группа и мир), вы можете сделать
chmod -R +rX,u+w,go-w my_web_app_project
, в котором
+ rX
означает + r, + X
(обратите внимание, что X
пишется с заглавной буквы - это важно).
+ r
означает установить разрешение на чтение для пользователя, группы и других. + X
означает установить разрешение на выполнение для пользователя, группы и других
, если оно в настоящее время установлено для любого из них или если объект является каталогом. u + w
означает установить разрешение на запись для пользователя. go-w
означает отключение разрешения на запись для группы и других. chmod
только то, что вам принадлежит
(если у вас нет привилегий) и которые не доступны только для чтения.
Если в вашем каталоге есть вещи, которые вы не можете chmod
,
любая из этих команд вызовет ошибку. find
ничего не сделают с объектами
, которые не являются каталогами или файлами (например, именованными каналами). find
с -exec chmod 755 {} +
может завершиться ошибкой
, если у вас еще нет прав на чтение и выполнение для всех папок {{1} } в каталоге верхнего уровня. chmod -R + rX, u + w, go-w
x
немного; в противном случае