apache报错403问题

七海恋空 2022-11-30 浏览(0 评论(0

最近接了一个活儿,让我帮忙看看apache为什么报错。平时最烦这种半拉子的活儿了,别人干了一半,我这啥情况都没搞清楚呢,就去给人擦屁股,这叫什么事。

首先是vpn问题,整了半天。明明已经登录vpn了,可就是访问不了服务器,ping也ping不通。后来问题解决了,重新装一下SANGFOR这个vpn的插件就行了。

登录了Linux服务器,先得找一下apache装在哪个目录下。用命令whereis apache试试,算了不好使,直接用history查一下之前的命令行记录完事了。找到Apache目录后,查看一下Apache配置文件httpd.conf,配置如下:

DocumentRoot "/home/web/site"
<Directory "/home/web/site">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

这样配置其实是没问题的,因为这是apache2.4的配置方法,注意跟apach2.2的配置不太一样。我还在网上搜了一堆来自火星的文章,然后还根据文章去修改Apache配置,真傻!IT这行业就是更新发展快,以后注意不要受火星帖干扰了。既然配置没问题为什么还报错呢?

前台页面提示403

You don't have permission to access / on this server.

后台apache输出错误日志

because search permissions are missing on a component of the path

我用ps -ef | grep httpd命令查看了一下Apache的进程,发现Apache是用apache这个用户运行的。我真的要骂人了,这Apache谁装的,怎么不用root用户启动。之前我还以为是SELinux或者防火墙的问题呢。折腾了半天,其实就是apache这个用户没有/home/web/site这个网站目录下的读写权限,才导致403报错的。apache这个用户都没有访问网站目录权限,那你还指望Apache这个应用给你解析html页面。直接su - apache账户访问一下网站目录就明明白白了。

我试图把Apache的运行用户改成root,当然这样最省事了,但是失败了,人家编译安装的时候就指定了apache这个用户。貌似现在的Apache不怎么提倡用root用户运行了,毕竟现在搞系统的人越来越内卷,越来越重视安全问题了。既然要提倡安全,那我就不能直接把目录改成777权限咯。站点目录放在web这个用户的主目录下,我当然也不能直接用chown把所有者换成apache。最后我是把apache加入到web这个组里面,然后修改站点目录的权限,增加组的读写执行权限。