403 отказано в разрешении nginx, vagrant, centos

У меня проблемы с настройкой моей основной бродячей виртуальной машины для обслуживания некоторого контента. Nginx говорит, что у него нет разрешения на обслуживание индекса для папки моего проекта. Я попытался установить все разрешения на 777 для каталога проекта и изменить пользователя Nginx на vagrant.

Я не уверен, но из-за прочтения, очевидно, SELinux может вызывать проблемы, так как он включен на сервере, и в /var/log/audit/audit.log как это:

type=AVC msg=audit(1471185070.388:854): avc:  denied  { getattr } for  pid=4653 comm="nginx" path="/var/www/project/index.html" dev="0:37" ino=12161210 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=file

Моя конфигурация nginx выглядит так:

server {
    listen 80 default_server;
    server_name knifesprinter.local;
    index index.html;

    location /{
        root /var/www/project;
        autoindex on;
    }

    error_page  404              /404.html;
    location = /404.html {
    root   /usr/share/nginx/html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

И все разрешения на /var/www/project разрешены. Кто-нибудь знает, в чем здесь дело? Я настроил несколько серверов с Nginx раньше, но не на CentOS 7

1 ответ

Решение

Да, определенно проблема SELinux. Пожалуйста, не отключайте SELinux, установив принудительное значение 0. Вы можете разрешить доступ Nginx, используя audit2allow, Это создаст для вас политику, которую вы можете применить, используя semodule, Вам нужно будет запустить следующее как root, Вы можете выполнить команды sudo, но у вас возникнет проблема с semodule,

Во-первых, если ваша система не имеет audit2allow:

yum install policycoreutils-python

Далее создайте политику:

grep httpd /var/log/audit/audit.log | audit2allow -M mypol

Затем примените политику:

semodule -i mypol.pp

Стоит отметить, что audit2allow может дать больше доступа, чем необходимо. Если вы задумывались об этом, вы также можете использовать restorecon или chcon в некоторых случаях.

Надеюсь, это поможет.

Другие вопросы по тегам