Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

HTTP 403 Forbidden Linux / DevOps

Ошибка 403 Forbidden в Nginx: настройка прав доступа chmod и владельцев chown

Обновлено: 27.08.2026 · Официальная документация ↗

Симптомы ошибки 403 Forbidden в Nginx

Ошибка с кодом ответа 403 Forbidden указывает на то, что веб-сервер успешно принял запрос от клиента, понял его, но категорически отказывается отдавать страницу из-за ограничений безопасности или отсутствия прав на чтение.

  • В браузере отображается стандартная системная страница: 403 Forbidden / nginx.
  • В системном журнале /var/log/nginx/error.log регистрируется запись: directory index of "/var/www/site/" is forbidden.
  • В логе ошибок появляется статус: ... open() "/var/www/site/index.html" failed (13: Permission denied).

Три основные причины и методы исправления ошибки 403

  1. Причина 1. Неправильный владелец файлов (chown):

    Nginx и PHP-FPM в Ubuntu/Debian работают от имени системного пользователя www-data. Если вы загрузили файлы под пользователем root, веб-сервер не сможет их прочитать. Назначьте правильного владельца:

    sudo chown -R www-data:www-data /var/www/yoursite
  2. Причина 2. Слишком строгие права доступа (chmod):

    Веб-серверу требуется право на чтение файлов (644) и право на вход в директории (755). Установите эталонные права:

    # Устанавливаем права 755 для всех папок:
    sudo find /var/www/yoursite -type d -exec chmod 755 {} \;
    
    # Устанавливаем права 644 для всех файлов:
    sudo find /var/www/yoursite -type f -exec chmod 644 {} \;
  3. Причина 3. Отсутствие индексного файла в директиве Nginx:

    Если в папке сайта нет файла index.html или index.php, а листинг каталога отключен, Nginx вернет ошибку 403. Откройте конфигурацию виртуального хоста:

    sudo nano /etc/nginx/sites-available/yoursite.conf

    Убедитесь, что внутри блока server присутствует корректная строка index:

    server {
        listen 80;
        server_name example.com;
        root /var/www/yoursite;
        index index.php index.html index.htm;
        ...
    }

    Проверьте синтаксис и перезапустите Nginx:

    sudo nginx -t && sudo systemctl reload nginx

Критическая ошибка новичков: Никогда не выставляйте права chmod -R 777! Это создает огромную дыру в безопасности, позволяя любому скрипту перезаписывать системные исполняемые файлы.

💡 Практика специалистов: При возникновении ошибки 403 проверьте права доступа не только к целевой папке, но и ко всей цепочке родительских каталогов (включая /var и /var/www). На каждом уровне у группы 'others' должно быть право на выполнение (+x).

Частые вопросы (FAQ)

Почему права 755 нужны для папок, а не 644?

В Linux бит исполнения (+x) для каталогов означает право на вход внутрь папки и доступ к ее содержимому. Без него веб-сервер не сможет открыть файлы внутри каталога.

Что делать, если ошибка 403 возникает только при обращении к скрытым файлам?

В типовых конфигурациях Nginx доступ к скрытым файлам (например, .env или .git) специально заблокирован правилом location ~ /\. { deny all; } в целях безопасности.

Как включить отображение файлов в папке (Directory Listing) вместо ошибки 403?

Добавьте директиву autoindex on; внутри блока location в конфигурационном файле Nginx.

Как проверить, под каким пользователем запущен Nginx?

Выполните команду ps aux | grep nginx. Первая колонка покажет имя пользователя (обычно www-data или nginx).

Полезные материалы
Рекомендуем