Правильные права доступа к файлам для WordPress на PHP
Правильные права доступа для WordPress: полное руководство
Вы правы: права 777 — это грубейшая ошибка безопасности. Однако просто выставить 755/644 тоже недостаточно, потому что WordPress требует гибкого подхода. Давайте разберёмся по порядку.
Общее правило (безопасный минимум)
- Файлы (php, js, css, png, jpg):
644(владелец — чтение+запись, группа — чтение, остальные — только чтение) - Папки (директории):
755(владелец — чтение+запись+выполнение, группа и остальные — чтение+выполнение)
Особые случаи для WordPress
WordPress часто работает в режиме, где веб-сервер (обычно www-data или nobody) и ваш FTP-пользователь — разные учётные записи. Поэтому некоторые папки требуют прав на запись для веб-сервера:
# Корневая папка WordPress
chmod 755 /var/www/wordpress
# Файлы в корне (index.php, wp-config.php и т.д.)
chmod 644 /var/www/wordpress/*.php
# wp-config.php — особо важный файл, можно 600 или 440
chmod 600 /var/www/wordpress/wp-config.php
# Папка wp-content и всё внутри
chmod 755 /var/www/wordpress/wp-content
chmod 755 /var/www/wordpress/wp-content/themes
chmod 755 /var/www/wordpress/wp-content/plugins
chmod 755 /var/www/wordpress/wp-content/uploads
# Для папки uploads может потребоваться 775, если веб-сервер — не владелец
chmod 775 /var/www/wordpress/wp-content/uploads
# .htaccess — обычно 644, но если Apache не может писать, то 664
chmod 644 /var/www/wordpress/.htaccess
# Папки wp-admin и wp-includes — только чтение
chmod 755 /var/www/wordpress/wp-admin
chmod 755 /var/www/wordpress/wp-includes
Почему 777 — это плохо?
Права 777 означают, что любой пользователь сервера (включая потенциально вредоносные скрипты) может читать, писать и выполнять ваши файлы. Если злоумышленник загрузит shell-скрипт в папку uploads, он получит полный контроль над сайтом.
Как определить правильного владельца
Выполните в SSH или через файловый менеджер:
# Узнать владельца файлов
ls -la /var/www/wordpress
# Обычно это user:group (например, myuser:www-data)
# Если владелец — myuser, а группа — www-data, то:
chown -R myuser:www-data /var/www/wordpress
chmod -R 755 /var/www/wordpress
find /var/www/wordpress -type f -exec chmod 644 {} \;
# Но для wp-content/uploads оставляем 775
chmod 775 /var/www/wordpress/wp-content/uploads
Проверка через PHP
Добавьте этот код в functions.php вашей темы для диагностики (потом удалите!):
add_action('admin_notices', function() {
$uploads = wp_upload_dir();
$path = $uploads['basedir'];
if (is_writable($path)) {
echo '<div class="notice notice-success">Папка uploads доступна для записи</div>';
} else {
echo '<div class="notice notice-error">Папка uploads НЕ доступна для записи!</div>';
}
});
Итоговая таблица
| Ресурс | Права | Примечание |
|---|---|---|
| Корень WordPress | 755 | Владелец: ваш FTP-пользователь |
| wp-config.php | 600 или 440 | Никогда не ставьте 777! |
| wp-content | 755 | Рекурсивно для всех подпапок |
| wp-content/uploads | 775 | Веб-сервер должен иметь право писать |
| wp-content/plugins | 755 | Для обновлений может потребоваться 775 |
| .htaccess | 644 | Если не работает — попробуйте 664 |
| Все .php файлы | 644 | Кроме wp-config.php |
После установки прав обязательно проверьте работу админки. Если что-то сломалось — временно поднимите права на конкретную папку, но никогда не ставьте 777 на всё подряд.
<<Альтернативный подход: через пользовательские группы
Если у вас shared-хостинг без доступа к SSH, используйте файловый менеджер в панели хостинга (cPanel, DirectAdmin). Вот пошаговый план:
- Создайте пользователя FTP с доступом к корню сайта.
- Войдите в файловый менеджер как этот пользователь.
- Выделите все файлы в корне WordPress → нажмите "Изменить права".
- Установите:
- Файлы: 644 (владелец — чтение/запись, группа — чтение, остальные — чтение)
- Папки: 755 (владелец — чтение/запись/выполнение, группа — чтение/выполнение, остальные — чтение/выполнение)
- Для папки wp-content/uploads установите 755, а если не работает загрузка — 775.
- wp-config.php — 644 (на некоторых хостингах 600 приводит к ошибке, так что оставьте 644).
Если после этого админка просит FTP-данные при обновлении, добавьте в wp-config.php:
define('FS_METHOD', 'direct');
Это заставит WordPress использовать прямой доступ к файлам через веб-сервер. Но убедитесь, что папки wp-content/themes и wp-content/plugins имеют права 755 (или 775 для обновлений).
Важно: Никогда не используйте права 777 на production-сайте. Если что-то не работает — ищите конкретную папку, которой не хватает записи, а не лейте 777 на всё.
Ответов пока нет.
Войдите чтобы оставить ответ
Блоги