403权限被拒绝nginx,vagrant,centos

时间:2016-08-14 14:51:07

标签: nginx permissions vagrant centos7

我无法设置我的基本流浪汉VM来提供某些内容。 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 个答案:

答案 0 :(得分:2)

叶,肯定是SELinux的问题。请不要通过将强制设置为0来禁用SELinux。您可以使用audit2allow允许Nginx访问。这将为您生成一个政策,您可以使用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 or chcon

我希望这会有所帮助。