SystemdDoctor
служба не работает nginx права частое

nginx 403 Forbidden и Permission denied на файлы сайта

Ошибка 403 при отдаче статики почти всегда про права. Рабочие процессы nginx работают от непривилегированного пользователя, и им нужен доступ не только к файлу, но и ко всем каталогам по пути — включая домашний каталог, если сайт лежит там.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Нет права на вход в каталог по пути

    Сайт в домашнем каталоге пользователя с правами 0700 недоступен рабочим процессам nginx. Права на сам файл при этом могут быть верными.

  2. Файлы принадлежат другому пользователю без прав на чтение

    После выгрузки сайта под root файлы могут оказаться с правами 0600. Для nginx они недоступны.

  3. Нет индексного файла, а листинг каталога отключён

    При запросе каталога без index.html и без autoindex on nginx отдаёт 403. Это не про права, хотя код тот же.

  4. Запрещает SELinux или AppArmor

    На системах с SELinux файлы сайта должны иметь подходящую метку. Стандартные права при этом в порядке, и причина не видна.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Точное сообщение: отказ в доступе, отсутствие индекса или запрет модуля безопасности.

sudo tail -20 /var/log/nginx/error.log

Права на каждом уровне пути — быстрее, чем перебирать каталоги вручную.

namei -l /путь/к/файлу/сайта

Проверка от имени пользователя рабочих процессов nginx.

sudo -u www-data test -r /путь/к/файлу && echo читается || echo отказ

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Нет права на вход в каталог по пути
Почему происходит
Сайт в домашнем каталоге пользователя с правами 0700 недоступен рабочим процессам nginx. Права на сам файл при этом могут быть верными.
Как проверить
Пройдите по пути от корня.
namei -l /home/user/site/index.html
Как исправить
Дайте право на вход в каталоги по пути (бит x) или перенесите сайт в /var/www, где такой проблемы нет.
sudo chmod o+x /home/user /home/user/site
2. Файлы принадлежат другому пользователю без прав на чтение
Почему происходит
После выгрузки сайта под root файлы могут оказаться с правами 0600. Для nginx они недоступны.
Как проверить
Посмотрите права на файлы сайта.
ls -l /var/www/site | head
sudo -u www-data test -r /var/www/site/index.html && echo читается || echo отказ
Как исправить
Выставьте права 0644 на файлы и 0755 на каталоги, владельцем оставьте того, кто выкладывает сайт.
sudo find /var/www/site -type f -exec chmod 644 {} + && sudo find /var/www/site -type d -exec chmod 755 {} +
3. Нет индексного файла, а листинг каталога отключён
Почему происходит
При запросе каталога без index.html и без autoindex on nginx отдаёт 403. Это не про права, хотя код тот же.
Как проверить
Посмотрите, что в каталоге, и настройку индекса.
ls /var/www/site/ | head
sudo nginx -T 2>/dev/null | grep -E "index|autoindex"
Как исправить
Добавьте индексный файл или включите листинг каталога, если он действительно нужен.
4. Запрещает SELinux или AppArmor
Почему происходит
На системах с SELinux файлы сайта должны иметь подходящую метку. Стандартные права при этом в порядке, и причина не видна.
Как проверить
Посмотрите отказы модуля безопасности.
sudo ausearch -m avc -ts recent 2>/dev/null | tail -10
ls -Z /var/www/site/index.html 2>/dev/null
Как исправить
Разметьте каталог сайта нужным типом и восстановите контексты.
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/site(/.*)?" && sudo restorecon -R /var/www/site

Пример вывода

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

2026/09/15 15:02:41 [error] 1121#1121: *12 open() "/home/user/site/index.html" failed (13: Permission denied), client: <адрес>, server: example.org, request: "GET / HTTP/1.1"

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация nginx: директивы index и autoindex документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено сайтом в домашнем каталоге с правами 0700.
    собственная проверка, systemd 255
    сверено 15 сентября 2026