Apache无法访问网站目录的权限配置求助
问题描述
我用Apache作为网站的Web服务器,网站文件放在/home/reiji/Documents/native_project_2目录下。目前/home/reiji目录的权限是750(对应权限位drwxr-x---),这样的权限下Apache没法访问我的网站。我用whoami命令查到Apache运行的用户是www-data,之后把www-data加入了reiji用户组,重启服务器后网站还是无法访问。
按道理说,目录权限750的话,组用户拥有读和执行权限,把www-data加到目录所属的用户组里,应该就能访问网站目录了才对。
另外附上我的Apache配置:
<Directory /home/reiji/Documents/native_project_2> Require all granted </Directory> <VirtualHost 127.0.0.2:80> DocumentRoot /home/reiji/Documents/native_project_2 FallbackResource /index.php ErrorLog /home/reiji/Documents/native_project_2/error.log </VirtualHost>
我已经用a2ensite启用了这个配置,并且重启过服务器了,还是不行,请问该怎么配置权限让Apache能访问网站目录?
解决方案
别着急,咱们一步步排查解决:
确认用户组是否生效
把www-data加入reiji组后,得确保Apache进程已经获取到新的组权限。先重启Apache服务试试:systemctl restart apache2也可以直接查看
www-data的组信息,确认reiji在列表里:groups www-data如果没看到
reiji,说明加组操作没生效,重新执行usermod -aG reiji www-data,再重启Apache。检查整个目录链的权限
Apache要访问到网站目录,得能遍历整个路径:/home→/home/reiji→/home/reiji/Documents→/home/reiji/Documents/native_project_2,每一级目录都需要**执行权限(x)**才能进入下一级。- 先确认
/home目录权限,默认一般是drwxr-xr-x,如果不是就设置:chmod o+x /home - 再检查
/home/reiji/Documents的权限,确保组用户有r-x权限:chmod g+rx /home/reiji/Documents
- 先确认
确认目录的所属组
检查/home/reiji、Documents以及网站目录的所属组是不是reiji:ls -ld /home/reiji /home/reiji/Documents /home/reiji/Documents/native_project_2输出的第三列应该是
reiji,如果不是,用这条命令修正:chgrp -R reiji /home/reiji/Documents/native_project_2模拟Apache用户验证访问
切换到www-data用户,手动尝试访问网站目录,看看具体哪里出问题:su -s /bin/bash www-data cd /home/reiji/Documents/native_project_2 ls如果这里报错,就根据错误提示调整对应目录的权限;如果能正常进入并列出文件,那可能是Apache配置有冲突,再检查虚拟主机的路径是否正确,或者有没有其他配置文件覆盖了当前设置。
SELinux的潜在限制(针对RHEL/CentOS等系统)
如果你用的是带SELinux的系统,就算文件权限对了,SELinux也可能阻止Apache访问用户家目录。可以临时关闭SELinux测试:setenforce 0,如果网站能访问了,就配置SELinux规则放行:semanage fcontext -a -t httpd_sys_content_t "/home/reiji/Documents/native_project_2(/.*)?" restorecon -Rv /home/reiji/Documents/native_project_2
备注:内容来源于stack exchange,提问作者Reiji Akkerman




