Как правильно настроить права доступа (chmod) к файлам и папкам WordPress: полное руководство для безопасности и работы

Введение: почему права доступа — это вопрос безопасности, а не только работы
Ошибка «Недостаточно прав для записи файла» или, наоборот, уведомления о слишком открытых доступах знакомы многим владельцам WordPress-сайтов. Неправильные настройки прав доступа — одна из главных причин взломов сайтов. В этой статье разберем, как настроить chmod правильно, балансируя между безопасностью и функциональностью.

Краткое содержание

1. Основы: что означают цифры в chmod

1.1 Система прав доступа

  • 4 = чтение (r)
  • 2 = запись (w)
  • 1 = выполнение (x)

1.2 Комбинации:

  • 755 = владелец: rwx (7), группа: r-x (5), остальные: r-x (5)
  • 644 = владелец: rw- (6), группа: r— (4), остальные: r— (4)
  • 750 = владелец: rwx (7), группа: r-x (5), остальные: — (0)

1.3 Кто есть кто:

  • Владелец (User) — пользователь сервера, под которым работают PHP-процессы
  • Группа (Group) — группа пользователей сервера
  • Остальные (World) — все остальные, включая посетителей сайта

2. Рекомендуемые права доступа для WordPress

2.1 Файлы

text
# Все PHP, HTML, CSS, JS файлы:
chmod 644

# wp-config.php (особый случай):
chmod 640 или 644

2.2 Папки (директории)

text
# Большинство папок:
chmod 755

# Папка загрузок (wp-content/uploads):
chmod 755, но файлы внутри — 644

2.3 Критически важные элементы

text
wp-config.php          → 640 (или 444 после настройки)
.htaccess             → 644
wp-content/           → 755
wp-content/uploads/   → 755
wp-admin/             → 755
wp-includes/          → 755

3. Пошаговая настройка прав доступа

Шаг 1: Проверка текущих прав

Через SSH (если есть доступ):

bash
# Просмотр прав для всех файлов ls -la # Просмотр прав конкретной папки ls -la /путь/к/вашему/сайту/

Через FTP-клиент (FileZilla, WinSCP):

  • Правая кнопка мыши на файле/папке → «Права доступа к файлу»

Шаг 2: Массовая установка правильных прав

Через SSH из корня сайта:

bash
# Устанавливаем правильные права для всех папок find /путь/к/сайту -type d -exec chmod 755 {} \; # Устанавливаем правильные права для всех файлов find /путь/к/сайту -type f -exec chmod 644 {} \;

Шаг 3: Особые случаи (вручную)

bash
# wp-config.php делаем более защищенным chmod 640 /путь/к/сайту/wp-config.php

# Папке загрузок даем права на запись chmod 755 /путь/к/сайту/wp-content/uploads/

# Плагинам и темам даем возможность обновляться chmod 755 /путь/к/сайту/wp-content/plugins/
chmod 755 /путь/к/сайту/wp-content/themes/

Шаг 4: Проверка через плагины WordPress

Для пользователей без доступа к SSH/FTP:

  1. iThemes Security → Настройки → Файловая система
  2. Wordfence Security → Сканирование → Диагностика
  3. Sucuri Security → Интегрированный аудит

4. Типичные проблемы и их решения

Проблема 1: «Для установки плагина требуются учетные данные FTP»

Причина: Веб-сервер (www-data, apache, nginx) не является владельцем файлов WordPress.

Решение:

bash
# Меняем владельца файлов (пример для Ubuntu/Debian) sudo chown -R www-data:www-data /путь/к/сайту/

Проблема 2: Ошибка безопасности в сканерах

Причина: Критическим файлам установлены права 777.

Решение:

bash
# Находим все файлы с правами 777 find /путь/к/сайту -type f -perm 777 # Меняем на 644 find /путь/к/сайту -type f -perm 777 -exec chmod 644 {} \;

Проблема 3: Не загружаются изображения

Причина: Папке uploads недостаточно прав.

Решение:

bash
# Даем права на запись chmod 755 /путь/к/сайту/wp-content/uploads/

# Для вложенных папок тоже find /путь/к/сайту/wp-content/uploads/ -type d -exec chmod 755 {} \;

5. Автоматизация и плагины для управления правами

5.1 Плагины для автоматической настройки:

  • iThemes Security — автоматическое исправление прав доступа
  • All-In-One Security (AIOS) — сканер разрешений файлов
  • Wordfence Security — мониторинг изменений прав

5.2 Сценарий для автоматической проверки (сохранить как check_permissions.sh):

bash
#!/bin/bash echo "Проверка прав доступа WordPress..." echo "================================" # Критические файлы echo "wp-config.php:" ls -la wp-config.php | awk '{print $1, $9}' echo "htaccess:" ls -la .htaccess 2>/dev/null | awk '{print $1, $9}' echo "Папки:" ls -la | grep '^d' | awk '{print $1, $9}' echo "Рекомендации по исправлению:" echo "1. Файлы: find . -type f -exec chmod 644 {} \;" echo "2. Папки: find . -type d -exec chmod 755 {} \;"

6. Особенности для разных хостингов

6.1 Shared-хостинг (общий):

  • Часто требуются права 755 для папок и 644 для файлов
  • wp-config.php может требовать 600 или 640
  • Обратитесь в техподдержку хостинга за рекомендациями

6.2 VPS/VDS (свои серверы):

  • Можно настроить оптимальные права под свои нужды
  • Рекомендуется использовать отдельного пользователя для WordPress
  • Настройте правильного владельца файлов (chown)

6.3 Managed WordPress-хостинг:

  • Права часто уже настроены оптимально
  • Изменение прав может нарушить работу хостинга
  • Консультируйтесь с поддержкой перед изменениями

7. Безопасность: что никогда нельзя делать

❌ Никогда не устанавливайте:

  • 777 для любых файлов или папок
  • 777 для wp-config.php (это открытый доступ для всех)
  • 777 для папки uploads (используйте 755)

✅ Лучшие практики безопасности:

  1. Регулярно проверяйте права доступа
  2. Используйте плагины безопасности для мониторинга
  3. Делайте бэкап перед массовым изменением прав
  4. Документируйте внесенные изменения

8. Часто задаваемые вопросы

Вопрос: Почему после обновления WordPress права сбрасываются?
Ответ: Некоторые обновления могут менять владельца файлов. Используйте фиксированные скрипты для восстановления.

Вопрос: Как защитить wp-config.php максимально?
Ответ:

bash
chmod 400 wp-config.php  # Только чтение для владельца # Или перенесите его на уровень выше корня сайта (требует настройки)

Вопрос: Что делать, если плагины просят права 777?
Ответ: Ищите альтернативу плагину. Качественные плагины работают с правами 755/644.

Заключение

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

Главное правило: Если не уверены в необходимости прав — ставьте меньше. Лучше потом добавить, чем дать хакерам возможность для атаки.


Примечание: Данные рекомендации являются общими. Для конкретных хостингов и конфигураций сервера могут потребоваться индивидуальные настройки. Всегда делайте полный бэкап сайта перед изменением прав доступа к файлам.