如何解决 Nginx 子目录权限被拒绝的问题?

如何解决 Nginx 子目录权限被拒绝的问题?

我正在使用 Fedora 29 服务器。 SELinux 处于强制模式。我在让 Nginx 从根目录下的子目录提供文档时遇到问题。我需要知道如何进一步排除故障,因为 Nginx 日志条目相对于我在检查权限时看到的内容并不准确。

从 root 访问文档就http://172.16.2.1/可以了,比如index.html.访问子目录中的文档http://172.16.2.1/ftc-data/会导致 403 错误。error.log显示:

2019/03/27 08:45:24 [error] 18589#0: *5 directory index of "/var/www/html/ftc-data/"
is forbidden, client: 172.16.4.8, server: _, request: "GET /ftc-data/ HTTP/1.1",
host: "172.16.2.1"

/var/www/html权限来看我觉得没问题:

# ls -Al
total 64
...
-rw-r-----. 1 root nginx  7822 Mar 27 08:09 index.html
lrwxrwxrwx. 1 root nginx    22 Mar 27 07:57 ftc-data -> /var/ftc/ftc-data
...

再次来自/var/www/html

# ls -Al ftc-data/
total 98192
-rw-r-----. 1 root nginx 1411314 Mar 26 06:47 2019-01-28.csv
-rw-r-----. 1 root nginx 3105895 Mar 26 06:47 2019-01-29.csv
-rw-r-----. 1 root nginx 2782858 Mar 26 06:47 2019-01-30.csv
...

和:

# ls -Al /var/ftc/
total 4
drwxr-x---. 2 root nginx 4096 Mar 27 07:16 ftc-data

symlinks off不存在于nginx.conf.服务器已重新启动systemctl restart nginx。我还运行restorecon -r /var/www/restorecon -r /var/ftc/修复了 SELinux 标签。

我不知道下一步该去哪里搜索。0777尽管它在 Stack Overflow 上的开发人员中很受欢迎,但这并不是一个可接受的答案。

如何进一步解决权限问题?


如果重要的话,尝试获取文件http://172.16.2.1/ftc-data/2019-01-28.csv会导致:

2019/03/27 09:02:39 [error] 18589#0: *13 open() "/var/www/html/ftc-data/2019-01-28.csv"
failed (13: Permission denied), client: 172.16.4.8, server: _, request: "GET /ftc-data/2019-01-28.csv HTTP/1.1",
host: "172.16.2.1"

和:

# namei -l /var/ftc/
f: /var/ftc/
dr-xr-xr-x root root  /
drwxr-xr-x root root  var
drwxr-xr-x root nginx ftc

# namei -l /var/www/
f: /var/www/
dr-xr-xr-x root root  /
drwxr-xr-x root root  var
drwxr-x--- root nginx www

我相当确定不存在权限问题。还有其他事情是错误的。

答案1

正如您提到的,这很可能与 SELinux 配置有关。正如建议的答,请执行以下命令来解决问题:

chcon -R -t httpd_sys_content_t /var/ftc/

# ls -Zd /var/www/html/ /var/ftc/
              unconfined_u:object_r:var_t:s0 /var/ftc/
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

# chcon -R -t httpd_sys_content_t /var/ftc/

# ls -Zd /var/www/html/ /var/ftc/
unconfined_u:object_r:httpd_sys_content_t:s0 /var/ftc/
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

相关内容