超级诡异的 Nginx 403 错误问题,老司机折腾了半天都没找到原因 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oldcai
0.01D
V2EX    NGINX

超级诡异的 Nginx 403 错误问题,老司机折腾了半天都没找到原因

  •  
  •   oldcai
    PRO
    oldcai 2016-06-05 18:33:10 +08:00 5743 次点击
    这是一个创建于 3426 天前的主题,其中的信息可能已经有所发展或是发生改变。

    所有层级目录权限 755 、文件权限 644 ,但是还是会 403

    于是我把演示目录中的 html 目录整个复制过来,结果发现正常 200

    好,我就按照演示目录的权限、所有者、用户组把目录设置的一模一样。

    结果还是 403

    结果还是 403

    结果还是 403


    折腾半天才定位到这个原因

    如果只是使用,我直接复制演示目录就好了,但是还是不甘心,想知道到底 为什么 为什么 为什么

    我把能想到的信息都查了一遍,发上来给各位大神们来看看,还需要其他什么有用的信息也可以找我要


    环境简介:

    CentOS Linux release 7.2.1511 (Core)

    内核 3.10.0-327.18.2.el7.x86_64

    文件系统是 xfs

    本来第二块盘是绑定在 /home 的,后来我重新给绑定到了 /var

    不能使用的这个目录是我从另一台机器上压缩打包过来解压的

    26 条回复    2016-06-07 02:40:17 +08:00
    DoraJDJ
        1
    DoraJDJ  
       2016-06-05 18:41:01 +08:00 via Android   1
    SELinux 的角色有没有设定好?我之前在 Fedora 里弄 Apache 也是一样的问题
    dndx
        2
    dndx  
    2016-06-05 18:44:20 +08:00   1
    几乎可以确定是 SELinux 的问题, restorecon 试试。
    notgod
        3
    notgod  
       2016-06-05 18:55:05 +08:00   1
    perl -pi -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    perl -pi -e 's/SELINUX=permissive/SELINUX=disabled/' /etc/selinux/config

    echo "0" > /selinux/enforce
    /usr/sbin/setenforce 0



    done 了
    oldcai
        4
    oldcai  
    OP
    PRO
       2016-06-05 19:06:01 +08:00
    @DoraJDJ
    @dndx
    @notgod
    setenforce Permissive
    暂时就可以用了,但是重启还是会不行,我研究研究,能不 disable 就不 disable 。
    谢谢诸位了
    realpg
        5
    realpg  
    PRO
       2016-06-06 00:44:34 +08:00   1
    selinux 是个极其牛逼的东西
    牛逼到全地球会配这玩意的人屈指可数……
    mikegreen7892003
        6
    mikegreen7892003  
       2016-06-06 01:42:37 +08:00
    mikegreen7892003
        7
    mikegreen7892003  
       2016-06-06 01:43:14 +08:00
    @realpg 一般也不是手动配,用工具配。
    就跟不一定要用 iptables ,可以用 firewall-cmd 。。。。
    McContax
        8
    McContax  
       2016-06-06 02:26:27 +08:00 via Android
    selinux 完全关闭。当时我刚转到完整版的 centos 时也这样, php 无法写入,明明都 777 权限了,后来永久关掉(disable),现在耳根清净,不过我还是没弄明白 selinux 用来干啥
    img src="https://cdn.v2ex.com/avatar/c8aa/9aa7/152083_normal.png?m=1735670770" class="avatar" border="0" align="default" alt="lslqtz" data-uid="152083" />
        9
    lslqtz  
       2016-06-06 03:16:29 +08:00
    @McContax 开启 selinux 后更安全一些,可以防止进程读写不该读写的东西。。但实际就是卵用。
    dndx
        10
    dndx  
       2016-06-06 05:52:27 +08:00
    @notgod 根本不需要禁用。 LZ 的 case 简单一行:

    restorecon -R /var/www/html

    应该就解决了
    dndx
        11
    dndx  
       2016-06-06 05:55:55 +08:00   1
    @McContax 我自己的生产服务器从来不禁用 SELinux ,熟悉后很快就能定位、解决权限问题。

    如果应用程序本身有漏洞, SELinux 是最有效的一道防线,一个配置良好的 SELinux 系统有时甚至会让 remote exploit 变的完全 useless 。直接禁用未免因噎废食。

    参考:
    http://stopdisablingselinux.com/
    oldcai
        12
    oldcai  
    OP
    PRO
       2016-06-06 06:07:40 +08:00
    @dndx 试过 restorecon -R /var/www ,没有解决访问问题,后来加了个 httpd_sys_content_t 的 type ,就解决了。
    dndx
        13
    dndx  
       2016-06-06 06:35:55 +08:00   1
    @oldcai 那就很奇怪了。 restorecon -vR /var/www/html 看看输出,应该会自动恢复 httpd_sys_content_t 。经常用这个 command ,从来没出过问题。
    chaegumi
        14
    chaegumi  
       2016-06-06 08:05:44 +08:00
    nginx 的 server 配置加上 index index.html;
    chaegumi
        15
    chaegumi  
       2016-06-06 08:06:25 +08:00
    直接访问 index.html 能不能访问,如果不能就是配置下 index
    gpw1987
        16
    gpw1987  
       2016-06-06 08:55:29 +08:00
    我觉得 linux 的 SE 的确是有点问题, linux 在 BASH 操作下似乎一切都显得很复杂,像我们刚入门人很累呀,权限很多,容易设的混乱
    cccRaim
        17
    cccRaim  
       2016-06-06 09:03:53 +08:00
    这个我也遇到过...然而忘记什么问题了...忘记写博客了
    imxieke
        18
    imxieke  
       2016-06-06 09:28:35 +08:00 via iPhone
    楼主挂载是 ext4 格式?
    skylancer
        19
    skylancer  
       2016-06-06 10:13:05 +08:00
    @imxieke 不知道这个问题的意义何在呐..
    imxieke
        20
    imxieke  
       2016-06-06 10:53:26 +08:00 via iPhone
    @skylancer 我之前也遇到过 各种折腾 无效 改成 ext3 就好了 对你这适应不就不知道了。
    wensonsmith
        21
    wensonsmith  
       2016-06-06 12:41:59 +08:00
    歪个楼,楼主的这个 bash 主题是啥?
    oldcai
        22
    oldcai  
    OP
    PRO
       2016-06-06 12:45:35 +08:00
    @wensonsmith 是 zsh ,主题名是 af-magic
    oldcai
        23
    oldcai  
    OP
    PRO
       2016-06-06 12:53:40 +08:00
    @dndx 看了下,默认 httpd 有权限的目录似乎没有 /var/www/的,所以单纯恢复不一定有 httpd_sys_content_t 吧,而且之前的机器可能并没有开 selinux ,所以。。。
    至于那个文件夹已经被怒删了。。原来的压缩包也删了,暂时复现不了了,下次碰到再试试吧
    wombat
        24
    wombat  
       2016-06-06 12:58:12 +08:00 via Android
    修改 nginx 配置文件,直接访问 index 。文件夹用户设成 www ,重启 nginx 试试。
    oldcai
        25
    oldcai  
    OP
    PRO
       2016-06-06 13:04:57 +08:00
    @blackshadow 作为一个老司机,这些肯定都试过, centos 的用户是 nginx , debian/ubuntu 的是 www-data
    oldcai
        26
    oldcai  
    OP
    PRO
       2016-06-07 02:40:17 +08:00
    @dndx
    你好,找到一个压缩包,试了下,结果果然改成正确的 type 了,好像它是根据路径来给予的 type ,
    所以可能是我当时使用命令的路径不对,所以当时没有成功,现在测试是可运行的。
    感谢!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2818 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 14:16 PVG 22:16 LAX 07:16 JFK 10:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86