bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward

Какие права файлов стоит устанавливать на сервере?

calendar_month 17 марта 2025 schedule 10 мин. чтения visibility 888 просмотров
person
Valebyte Team
Какие права файлов стоит устанавливать на сервере?
summarize

TL;DR

  • Используйте права 644 для файлов: это разрешает запись владельцу и только чтение всем остальным.
  • Для директорий выбирайте 755, чтобы владелец мог управлять ими, а сервер — просматривать содержимое.
  • Избегайте прав 777: полный доступ для всех пользователей делает сервер уязвимым для взлома и удаления данных.
  • Соблюдайте принцип наименьших привилегий, предоставляя процессам только минимально необходимые права.
  • Запрет на выполнение (флаг -x) для файлов данных мешает запуску вредоносного кода при загрузке на сервер.

Какие права файлов стоит устанавливать на сервере?

Настройка прав доступа к файлам и директориям — это не просто рутинная задача, а один из краеугольных камней безопасности любого веб-проекта. В большинстве случаев, для обеспечения баланса между функциональностью и надёжностью, оптимальными правами для файлов являются 644, а для директорий — 755. Эти значения гарантируют, что владелец может читать и записывать (для файлов) или полноценно управлять (для директорий), а веб-сервер и другие пользователи могут только читать содержимое, не имея возможности его изменять или выполнять, что минимизирует риски несанкционированного доступа и модификации. Однако, как и в любой сфере администрирования, существуют исключения и нюансы, которые мы подробно разберём в этой статье, чтобы вы могли принимать обоснованные решения для своих серверов.

Почему права доступа так важны для безопасности сервера?

A secure server rack with a padlock over a file and folder, symbolizing file permissions and server security.

Представьте свой сервер как дом, а файлы и директории — как комнаты и вещи в них. Права доступа — это замки на дверях и разрешения на использование этих вещей. Если вы оставите все двери открытыми (например, 777), любой сможет войти, взять что угодно, изменить или даже поджечь дом. В цифровом мире это означает:

  • Предотвращение несанкционированного доступа: Злоумышленник, получивший доступ к одной части системы (например, через уязвимость в плагине), не сможет легко просматривать или изменять другие, более конфиденциальные файлы, если права настроены корректно.
  • Защита от модификации и внедрения вредоносного кода: Если веб-сервер не имеет прав на запись в файлы, то даже если атакующий сможет загрузить вредоносный скрипт, он не сможет сохранить его в исполняемой директории или изменить существующие файлы сайта.
  • Ограничение выполнения: Запрет на выполнение для обычных файлов (-x) не позволит злоумышленнику запустить произвольный код, даже если он каким-то образом был загружен на сервер.
  • Минимизация ущерба: Принцип наименьших привилегий (Principle of Least Privilege, PoLP) гласит: давать сущности (пользователю, процессу) ровно столько прав, сколько необходимо для выполнения её задач, и ни байта больше. Это значительно сокращает потенциальный вектор атаки и ограничивает ущерб в случае компрометации.

Неправильно настроенные права — это одна из самых распространённых причин взломов и проблем с безопасностью веб-приложений. Поэтому понимание и правильное применение файловых прав является фундаментальным навыком для любого системного администратора.

Основы файловых прав в Linux: Быстрый рефреш для коллег

Для тех, кто уже знаком с Linux, это будет быстрым напоминанием. Но даже опытные коллеги порой нуждаются в освежении базовых концепций.

Понимание символьных и восьмеричных прав

В Linux права доступа к файлам и директориям представлены в двух основных форматах: символьном и восьмеричном.

  • Символьный формат (rwx):
    • r (read) — чтение содержимого файла или списка файлов в директории.
    • w (write) — запись в файл или создание/удаление файлов в директории.
    • x (execute) — выполнение файла (если это скрипт или программа) или вход в директорию.
  • Восьмеричный формат: Каждому символу r, w, x присваивается числовое значение:
    • r = 4
    • w = 2
    • x = 1
    • - (нет права) = 0
    Суммируя эти значения, получаем восьмеричное число. Например, rwx = 4+2+1 = 7, rw- = 4+2+0 = 6, r-x = 4+0+1 = 5.

Эти комбинации применяются к трём категориям пользователей:

  • u (user) — владелец файла или директории.
  • g (group) — группа, которой принадлежит файл или директория.
  • o (others) — все остальные пользователи системы.

Когда вы видите права вида 755, это означает:

  • Первая цифра (7) — права для владельца (rwx).
  • Вторая цифра (5) — права для группы (r-x).
  • Третья цифра (5) — права для остальных (r-x).

Вот краткая таблица основных комбинаций:

Восьмеричное значение Символьное значение Описание
0 --- Нет прав
1 --x Только выполнение (для файлов) / вход (для директорий)
2 -w- Только запись
3 -wx Запись и выполнение / вход
4 r-- Только чтение
5 r-x Чтение и выполнение / вход
6 rw- Чтение и запись
7 rwx Чтение, запись и выполнение / вход

Владелец, Группа, Остальные (User, Group, Other)

Каждый файл и директория в Linux имеет владельца (пользователя) и группу. Управление ими осуществляется командами chown (change owner) и chgrp (change group).

Для веб-серверов критически важно понимать, под каким пользователем и группой работает ваш веб-сервер (Apache, Nginx). Обычно это www-data, apache, nginx или другие специфические пользователи. Эти пользователи должны иметь достаточные права для чтения файлов сайта и, в некоторых случаях, для записи в определённые директории (например, для загрузки изображений или кеширования).

Совет от Valebyte: Всегда проверяйте, какой пользователь запускает ваш веб-сервер. Например, для Nginx на Ubuntu это часто www-data. Убедитесь, что файлы вашего сайта принадлежат этому пользователю или группе, или что у этого пользователя есть необходимые права через группу.

Нужен надежный сервер для ваших проектов?

Обеспечьте безопасность своих данных с нашими VPS-планами. Идеально для проектов, требующих контроля и производительности. — от €4.49/мес.

Выбрать VPS-план →
rocket_launch Быстрый выбор

Ищете сервер, который просто работает?

Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.

Смотреть тарифы VPS arrow_forward

Золотой стандарт: Рекомендуемые права для большинства веб-проектов

Как уже говорилось, для подавляющего большинства файлов и директорий на веб-сервере существуют общепринятые безопасные значения.

Файлы (644)

Права: rw-r--r--

  • Владелец (u): Может читать и записывать (rw-). Это необходимо для того, чтобы вы, как администратор, могли изменять файлы (например, обновлять код, вносить правки в конфигурацию) через SFTP/SSH.
  • Группа (g): Может только читать (r--). Это позволяет веб-серверу (который часто принадлежит к той же группе или имеет доступ через неё) читать содержимое файлов для отображения сайта.
  • Остальные (o): Могут только читать (r--). Это позволяет любому другому процессу в системе (например, другим пользователям на общем хостинге, если таковые есть) читать файлы, но не изменять их.

Примеры: index.php, .htaccess, style.css, image.jpg, config.php (если не содержит сверхчувствительных данных).

Директории (755)

Права: rwxr-xr-x

  • Владелец (u): Полные права (rwx). Вы можете создавать, удалять, переименовывать файлы и поддиректории внутри неё.
  • Группа (g): Чтение и выполнение (r-x). Веб-сервер может просматривать содержимое директории (r) и входить в неё (x), чтобы получить доступ к файлам внутри.
  • Остальные (o): Чтение и выполнение (r-x). Аналогично группе, позволяет другим процессам просматривать и входить в директорию.

Примеры: wp-content, uploads (для обычных файлов), cache (если веб-сервер не должен туда писать), includes.

Эти настройки обеспечивают достаточную функциональность для работы большинства веб-приложений, одновременно предоставляя хороший уровень безопасности.

Исключения из правил: Когда стандартные права не подходят

Как и в любом правиле, здесь есть исключения. Некоторые файлы и директории требуют особых прав для корректной работы или повышенной безопасности.

Исполняемые скрипты (755 или 700)

Если у вас есть скрипты на PHP, Python, Bash (например, CGI-скрипты, консольные утилиты, кроны), которые должны быть исполняемыми, им потребуется бит x.

  • 755 (rwxr-xr-x): Для скриптов, которые должны выполняться веб-сервером или другими пользователями. Например, CGI-скрипты.
  • 700 (rwx------): Для скриптов, которые должны выполняться только владельцем (например, ваш личный скрипт для бэкапа, запускаемый по крону). Это максимально ограничивает доступ.

Важно: Никогда не давайте исполняемые права (x) файлам, которые не должны быть исполняемыми, таким как изображения, CSS, HTML или обычные PHP-файлы, которые интерпретируются, а не выполняются напрямую как бинарники.

Файлы конфигурации с конфиденциальными данными (600 или 640)

Файлы, содержащие пароли к базам данных, API-ключи или другие чувствительные данные, требуют максимальной защиты.

  • 600 (rw-------): Владелец может читать и записывать, никто другой не имеет никаких прав. Это самый безопасный вариант.
  • 640 (rw-r-----): Владелец может читать и записывать, группа может читать. Используется, если веб-серверу (который находится в этой группе) нужно прочитать этот файл, но никакому другому пользователю.

Примеры: wp-config.php (для WordPress), .env файлы, database.php.

Директории для загрузки файлов (775 или 770)

Если ваше веб-приложение позволяет пользователям загружать файлы (изображения, документы) или создаёт кеш, сессии, логи, веб-серверу потребуется право на запись в соответствующие директории.

  • 775 (rwxrwxr-x): Владелец и группа имеют полные права, остальные могут только читать и входить. Это безопасно, если веб-сервер работает под пользователем, который входит в группу-владельца директории.
  • 770 (rwxrwx---): Владелец и группа имеют полные права, остальные не имеют никаких прав. Более строгий вариант, если вы не хотите, чтобы кто-либо, кроме владельца и группы, имел доступ.

Важно: Никогда не устанавливайте 777 (rwxrwxrwx) на директории, доступные через веб! Это открывает вашу систему для записи любому пользователю, что является огромной дырой в безопасности.

Для таких директорий также важно правильно настроить владельца и группу. Например, если веб-сервер работает как www-data, а директория принадлежит user:www-data с правами 775, то www-data сможет в неё писать.

Использование ACL (Access Control Lists)

В более сложных сценариях, когда стандартные права user/group/other недостаточны (например, нужно дать права записи нескольким разным пользователям или группам на один и тот же ресурс, не расширяя права для "others"), можно использовать ACL. Это позволяет устанавливать более гранулярные права. Команды setfacl и getfacl помогут вам в этом.

# Дать пользователю 'dev' права на чтение и запись в директорию 'uploads'
setfacl -m u:dev:rwx uploads

# Проверить ACL для директории
getfacl uploads

Однако ACL — это тема для отдельной статьи, и для большинства типовых веб-проектов достаточно стандартных прав.

Как управлять правами: Команды chmod и chown

Управление правами доступа осуществляется с помощью двух основных команд:

chmod – Изменение прав доступа

Команда chmod (change mode) используется для изменения прав доступа к файлам и директориям.

# Установить права 644 для файла index.html
chmod 644 index.html

# Установить права 755 для директории images
chmod 755 images

# Рекурсивно установить права 644 для всех файлов в текущей директории и поддиректориях
find . -type f -exec chmod 644 {} \;

# Рекурсивно установить права 755 для всех директорий в текущей директории и поддиректориях
find . -type d -exec chmod 755 {} \;

Внимание: Будьте крайне осторожны с рекурсивными командами chmod -R или find ... -exec chmod .... Ошибка может сделать ваш сайт неработоспособным или, что ещё хуже, уязвимым.

chown – Изменение владельца и группы

Команда chown (change owner) используется для изменения владельца и/или группы файла или директории.

# Изменить владельца файла на 'www-data'
chown www-data index.html

# Изменить владельца и группу директории 'uploads' на 'www-data:www-data'
chown www-data:www-data uploads

# Рекурсивно изменить владельца и группу для всех файлов и директорий в /var/www/html
chown -R www-data:www-data /var/www/html

Обычно рекомендуется, чтобы файлы вашего веб-сайта принадлежали пользователю, под которым вы работаете (например, youruser), а группа была той, под которой работает веб-сервер (например, www-data). Это позволяет вам управлять файлами, а веб-серверу — читать их через групповые права.

rocket_launch Быстрый выбор

Ищете сервер, который просто работает?

Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.

Смотреть тарифы VPS arrow_forward

Практические советы и лучшие практики

  • Принцип наименьших привилегий (PoLP): Это золотое правило. Всегда давайте ровно столько прав, сколько необходимо, и ни байта больше. Если файл не должен быть исполняемым, не давайте ему x. Если веб-серверу не нужно писать в директорию, не давайте ему w.
  • Регулярный аудит: Периодически проверяйте права доступа к критически важным файлам и директориям. Особенно после установки новых плагинов, тем или обновлений. Команды ls -l, find, а также различные сканеры безопасности могут помочь в этом.
  • umask: Узнайте о umask. Это значение определяет права по умолчанию для новых файлов и директорий, создаваемых в системе. Правильная настройка umask может помочь автоматически создавать файлы с более безопасными правами. Обычно для файлов это 0022 (что даёт 644) и для директорий 0002 (что даёт 775).
  • SELinux/AppArmor: Не забывайте, что файловые права — это только один слой защиты. Системы принудительного контроля доступа, такие как SELinux или AppArmor, предоставляют дополнительный уровень безопасности, ограничивая, что процессы могут делать с файлами, даже если стандартные права доступа позволяют больше. Они могут быть сложны в настройке, но обеспечивают мощную защиту.
  • Использование систем контроля версий: Хотя Git сам по себе не управляет правами доступа на сервере, он позволяет легко откатывать изменения, если вы случайно испортили файлы или права при обновлении.
  • Тестирование: После любых изменений прав доступа всегда проверяйте работоспособность вашего сайта и всех его функций.

Выводы

Правильная настройка прав доступа к файлам — это не просто рекомендация, а обязательное условие для обеспечения безопасности и стабильности работы вашего сервера и веб-приложений. Запомните "золотой стандарт": 644 для файлов и 755 для директорий, и используйте его как базовую отправную точку.

Однако будьте готовы к исключениям: конфиденциальные файлы требуют более строгих 600 или 640, а директории, куда веб-серверу нужно записывать данные (загрузки, кеш), потребуют 775 или 770 с правильной настройкой владельца/группы. Всегда следуйте принципу наименьших привилегий и регулярно проводите аудит.

Не пренебрегайте этим аспектом, ведь одна неправильно настроенная директория может стать входной точкой для злоумышленника. Инвестиции времени в понимание и правильное применение файловых прав окупятся спокойствием и надёжностью вашей инфраструктуры. Удачи в администрировании!

Масштабируйте безопасность с облачными решениями

Для максимальной гибкости и масштабируемости, переходите на облачные инстансы. Идеально для растущих проектов.

Начать с облака →

Поделиться записью:

support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.