wppartner.ru wordpress WP Partner

WordPress: как настроить правильные разрешения для файлов и каталогов

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

Почему важно правильно настраивать разрешения файлов и каталогов в WordPress

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

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

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

Риски неправильных разрешений

  • Уязвимость к взлому через изменение файлов
  • Проблемы с обновлениями плагинов и тем
  • Ошибки загрузки медиафайлов
  • Нарушение работы кэш-плагинов

Стандартные рекомендации по правам для WordPress

Для большинства случаев подойдут следующие настройки:

  • Каталоги (папки): 755 или 750
  • Файлы: 644 или 640
  • Файл wp-config.php: 600 или 640

Пояснения:

  • 755 — владелец может читать, писать и выполнять; группа и остальные — читать и выполнять;
  • 644 — владелец может читать и писать; группа и остальные — только читать;
  • 600 — только владелец может читать и писать.

При использовании хостинга с безопасной конфигурацией веб-сервера (например, Apache с mod_php или PHP-FPM) эти значения обеспечивают баланс между безопасностью и функциональностью.

Почему не стоит использовать 777

Значение 777 даёт полные права на чтение, запись и выполнение для всех пользователей. Это удобно для устранения проблем с доступом, но открывает сайт для атак. Например, злоумышленник может загрузить вредоносный скрипт или изменить важные файлы.

Как проверить текущие права доступа на сервере

Для проверки прав доступа к файлам и папкам можно использовать SSH и команду ls -l:

ls -l /var/www/html/wp-content/uploads

Вывод покажет права в виде drwxr-xr-x для папок и -rw-r--r-- для файлов. Первый символ обозначает тип (d — каталог, - — файл), остальные — права для владельца, группы и остальных.

Проверка через PHP

Можно написать функцию для проверки прав доступа к файлу или каталогу из WordPress:

function wppartner_check_permissions($path) {
    clearstatcache(true, $path);
    $perms = fileperms($path);
    return substr(sprintf('%o', $perms), -4);
}

// Использование
$path = ABSPATH . 'wp-config.php';
echo 'Права для ' . $path . ': ' . wppartner_check_permissions($path);

Эта функция возвращает права в виде строки, например, «0644».

Как изменить права доступа через командную строку

Для установки правильных прав используйте команды chmod:

find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
chmod 600 /var/www/html/wp-config.php

Эти команды рекурсивно установят 755 для всех папок, 644 для файлов и 600 для файла конфигурации.

Изменение владельца файлов

Очень важно также, чтобы владельцем файлов был пользователь, от имени которого работает веб-сервер (например, www-data):

chown -R www-data:www-data /var/www/html

Это обеспечит корректную работу WordPress без излишних прав.

Пример автоматической проверки и исправления прав через PHP

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

function wppartner_fix_permissions() {
    $root = ABSPATH;
    $dirIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($root));
    foreach ($dirIterator as $item) {
        if ($item->isDir()) {
            // Папки 755
            chmod($item->getPathname(), 0755);
        } else {
            // Файлы 644
            chmod($item->getPathname(), 0644);
        }
    }
    // wp-config.php 600
    chmod($root . 'wp-config.php', 0600);
}

// Запуск функции
// wppartner_fix_permissions();

Используйте с осторожностью и только на тестовом окружении, так как неверный запуск может нарушить права.

Использование плагина Clearfy для управления правами и безопасностью

Плагин Clearfy позволяет централизованно управлять некоторыми аспектами безопасности и оптимизации WordPress, включая рекомендации по безопасным правам доступа.

Хотя Clearfy не меняет права напрямую, он помогает выявить уязвимости и отключить ненужные функции, снижающие безопасность.

Итоги и рекомендации

Правильная настройка прав доступа — простая, но важная мера безопасности и стабильности WordPress-сайта. Используйте права 755 для каталогов и 644 для файлов, файл wp-config.php ограничьте до 600 или 640. Регулярно проверяйте права через SSH или PHP, корректно настраивайте владельца файлов.

При использовании плагинов и тем от WPSHOP учитывайте рекомендации по безопасности, чтобы избежать конфликтов и ошибок.

Такой подход поможет защитить сайт от взломов, а также избежать типичных ошибок при обновлении и работе WordPress.

×
Делай сайт лучше!!

-20% на премиум темы и плагины

Использовать скидку ⋙