求助 Nginx 和 SELinux 规则设置, web 目录文件无法下载

2020-07-24 16:02:39 +08:00
 LUREN

nginx 只用来下载一些静态文件,但老是遇到文件拒绝访问的问题,提示 failed (13: Permission denied)

目前已尝试下面方法:

# 将目录所有者设为 nginx 用户和用户组(测试这步非必需)
chown -R nginx:nginx /var/www/html/example.com

# 设置 web 目录 SELinux 安全上下文(这步起作用了)
chcon -t httpd_sys_content_t /var/www/html/example.com -R

但是 web 目录下会经常生成新文件,这意味着生成文件后,又要手动设置上面的 SELinux 规则。。。

在不关 SELinux 的情况下,大佬们是怎么处理这个问题的?有没有设置规则是能一劳永逸的。。

我查了 RHEL 文档,它说 /var/www/html 目录下文件是自动获得 httpd_sys_content_t 权限的,但这与测试结果不符。。。

服务器用的是最新 centos8 稳定版。

1205 次点击
所在节点    问与答
7 条回复
koharu
2020-07-24 18:10:48 +08:00
chcon -t httpd_sys_content_t -R /var/www/html/
koharu
2020-07-24 18:11:48 +08:00
@koharu 或者说先暂时关闭 selinux 再运行这句?
LUREN
2020-07-24 20:26:52 +08:00
@koharu 关闭前后运行都是这样,这是正常情况吗?还是邪乎问题。。。
LUREN
2020-07-24 20:28:05 +08:00
@koharu 有一个细节,不知道有没有影响,-R 放在目录前面会运行报错,只能加到后面
Nitroethane
2020-07-24 22:01:16 +08:00
默认情况下新建的文件是会继承所在目录的 security context 。再者,chcon 只是临时修改 security context,作持久改变的话得用 semanage 命令的 fcontext 子命令,具体的可以看 redhat 的文档
dingwen07
2020-07-24 22:13:10 +08:00
ls -dZ 看看 html 目录上下文到底是什么
chron 是临时更改 持久用 semanage fcontext
LUREN
2020-07-25 10:23:38 +08:00
@Nitroethane
@dingwen07 感谢!我去阅读相关文档。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692851

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX