Изменить права на один файл легко с помощью chmod. Делать это для целого дерева каталогов — сотен файлов и папок — вот где чаще всего ошибаются. Команда chmod -R 755 работает, но делает исполняемыми все файлы, что неправильно для обычных веб-файлов. В этом руководстве разобраны рекурсивные команды и, что важнее, правильный способ задавать разные права для файлов и каталогов.

Основы: chmod -R

Флаг -R (рекурсивно) применяет chmod к каталогу и ко всему, что внутри него:

chmod -R 755 /path/directory

Это устанавливает 755 для всех файлов и папок. Для каталогов это нормально, но файлы обычно не должны быть исполняемыми — поэтому применять 755 ко всему для сайта не стоит.

Правильный способ: файлы 644, каталоги 755

Стандартные безопасные права — 644 для файлов (чтение/запись владельцу, чтение остальным) и 755 для каталогов (им нужен бит execute, чтобы в них можно было зайти). Используйте find, чтобы применить каждое правильно:

# установить 755 для всех каталогов:
find /path/directory -type d -exec chmod 755 {} \;

# установить 644 для всех файлов:
find /path/directory -type f -exec chmod 644 {} \;

Именно так делают опытные администраторы. -type d выбирает каталоги, -type f — файлы, поэтому каждый получает нужные права за один проход.

Рекурсивная смена владельца (chown)

Права и владелец — это разные вещи. Чтобы рекурсивно изменить владельца и группу, например, на пользователя веб-сервера:

sudo chown -R www-data:www-data /path/directory

Замените www-data на нужного пользователя для вашей системы (например, nginx, apache или ваше имя пользователя).

Никогда не используйте chmod -R 777. Это даёт каждому пользователю полный доступ на чтение, запись и выполнение, что является серьёзной угрозой безопасности и частой причиной взлома сайтов. Если что-то работает только с 777, проблема не в правах, а во владельце — исправляйте через chown.

Краткая справка

Права Значение Для чего
644 Владелец: чтение/запись, остальные: чтение Файлы
755 Владелец: полный доступ, остальные: чтение/выполнение Каталоги, скрипты
600 Только владелец: чтение/запись Приватные конфиги, ключи
777 Полный доступ для всех Избегать — риск безопасности