Командная строка: Как рекурсивно изменить права доступа только для папок (Directories) в текущей директории на 755?

Для того чтобы рекурсивно изменить права доступа только для папок (директорий) в текущей директории на 755, используется комбинация команд `find` и `chmod` в терминале Linux/Unix.

**Основная команда:**

find . -type d -exec chmod 755 {} ;

**Разбор команды по частям:**

— `find .` — запускает поиск начиная с текущей директории (`.` означает «здесь»).
— `-type d` — фильтрует результаты, оставляя только директории (d = directory). Файлы при этом игнорируются.
— `-exec chmod 755 {} ;` — для каждого найденного объекта выполняет команду `chmod 755`. `{}` — это плейсхолдер, куда подставляется путь к найденной директории. `;` завершает выражение `-exec`.

**Альтернативный вариант с `+` (более быстрый):**

find . -type d -exec chmod 755 {} +

Вместо `;` используется `+` — это позволяет передавать сразу несколько путей в одну команду `chmod`, что значительно ускоряет выполнение при большом количестве директорий.

**Ещё один вариант через xargs:**

find . -type d | xargs chmod 755

Этот способ также эффективен, но может давать ошибки, если в именах папок есть пробелы. Безопасная версия:

find . -type d -print0 | xargs -0 chmod 755

Флаг `-print0` и `-0` обеспечивают корректную обработку путей с пробелами и специальными символами.

**Что означают права 755:**
— `7` (владелец): чтение + запись + выполнение (rwx)
— `5` (группа): чтение + выполнение (r-x)
— `5` (остальные): чтение + выполнение (r-x)

Для директорий право «выполнение» означает возможность входить в директорию (`cd`). Поэтому 755 — стандартные права для публичных папок на веб-серверах и в системных директориях.

**Важно:** Если вы хотите изменить права только для файлов (не папок), используйте `-type f` вместо `-type d`, и задайте права 644. Это стандартная практика при настройке прав на веб-сервере: папки — 755, файлы — 644.

**Пример для веб-сервера (сразу папки и файлы):**

find . -type d -exec chmod 755 {} + && find . -type f -exec chmod 644 {} +

Команда работает в bash, zsh и других POSIX-совместимых оболочках на Linux, macOS и других Unix-системах.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.