V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LUREN
V2EX  ›  问与答

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

  •  
  •   LUREN · 2020-07-24 16:02:39 +08:00 · 1203 次点击
    这是一个创建于 1582 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 稳定版。

    7 条回复    2020-07-25 10:23:38 +08:00
    koharu
        1
    koharu  
       2020-07-24 18:10:48 +08:00
    chcon -t httpd_sys_content_t -R /var/www/html/
    koharu
        2
    koharu  
       2020-07-24 18:11:48 +08:00
    @koharu 或者说先暂时关闭 selinux 再运行这句?
    LUREN
        3
    LUREN  
    OP
       2020-07-24 20:26:52 +08:00
    @koharu 关闭前后运行都是这样,这是正常情况吗?还是邪乎问题。。。
    LUREN
        4
    LUREN  
    OP
       2020-07-24 20:28:05 +08:00
    @koharu 有一个细节,不知道有没有影响,-R 放在目录前面会运行报错,只能加到后面
    Nitroethane
        5
    Nitroethane  
       2020-07-24 22:01:16 +08:00
    默认情况下新建的文件是会继承所在目录的 security context 。再者,chcon 只是临时修改 security context,作持久改变的话得用 semanage 命令的 fcontext 子命令,具体的可以看 redhat 的文档
    dingwen07
        6
    dingwen07  
       2020-07-24 22:13:10 +08:00 via iPhone
    ls -dZ 看看 html 目录上下文到底是什么
    chron 是临时更改 持久用 semanage fcontext
    LUREN
        7
    LUREN  
    OP
       2020-07-25 10:23:38 +08:00
    @Nitroethane
    @dingwen07 感谢!我去阅读相关文档。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 22:00 · PVG 06:00 · LAX 14:00 · JFK 17:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.