403 permission denied nginx, vagrant, centos
403 permission denied nginx, vagrant, centos
我在设置我的基本 vagrant 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
是的,绝对是 SELinux 问题。请不要通过将 enforce 设置为 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。
希望对您有所帮助。
我在设置我的基本 vagrant 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
是的,绝对是 SELinux 问题。请不要通过将 enforce 设置为 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。
希望对您有所帮助。