欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx 出现failed (13: Permission denied)

程序员文章站 2022-07-12 19:18:29
...

问题

系统cent7,nginx运行出现403。查看/var/log/nginx/error.log错误如下

[error] 1028#1028: *3 opendir() "/xxx/xxx/xxx" failed (13: Permission denied), client: x.x.x.x, server: xxxx, request: "GET / HTTP/1.1", host: "x.x.x.x"

解决

显然是权限出了问题。
仔细查看后,发现同步过来的数据是属于用户www-data,而cent7下的nginx默认以nginx用户运行,且cent7下没有www-data用户。
遂新建www-data:

groupadd -g 33 www-data
useradd -g www-data -m -s /sbin/nologin -u 33 -d /var/www www-data

更改/etc/nginx/nginx.conf,将

user  nginx;

改为:

user  www-data;

我觉得稳了,让我们重启看看:

systemctl restart nginx

结果错误依旧。。。。

google之,发现是selinux的锅:

chcon -t httpd_sys_content_t -R /home/path/site

搞定

至于selinux的具体使用方法有些复杂,各位移步自己学习吧。


题外话

解决方案来自这里,有个很有意思的情况:
nginx 出现failed (13: Permission denied)
题主采纳了关闭selinux的方案,这和直接设置nginx的user为root的解决方案有异曲同工之妙。
nginx 出现failed (13: Permission denied)
中间两个有点答非所问,似乎没仔细看题主的情况。而靠谱的解决方案排最后,甚至净赞同数是-1.。。。。。