我使用 Apache2 进行完全本地开发。我尝试使 成为DocumentRoot
而的/home/vikrant/www/
权限为。/home/vikrant/
700
我403 Forbidden
明白DocumentRoot
了/home/vikrant/www/
有用!什么DocumentRoot
时候/var/www/
。
我甚至改变了权限/home/vikrant/www/
并777
改变了所有者和团体到www-data
。
主目录没有公开权限,是否可以从主目录提供服务?如果可以,那么该怎么做?
答案1
您需要至少 711 个权限/home/vikrant
。用户必须对目录拥有执行权限 (+x 或 1) 才能访问其下的任何内容。
答案2
将您的 /Var/www/ 链接到您的主 wikrant www,并确保 apache 守护进程所有者对该文件夹具有读取权限。
ln -s /home/vikrant/www /var/www/vikrant chmod -R g+w /var/www/vikrant
ls -alt /var/www/vikrant # 检查哪个组是所有者。
ps axu|grep apache2 #检查 apache 守护进程的所有者。
将 apache 守护进程的所有者添加到拥有 /var/www/vikrant 文件的组。
答案3
更深入地检查你的配置。你的默认 Apache 设置可能安装得很简单不是允许流量到 /。实际上,它可能仅配置为允许流量到 /var/www。
除了设置目录权限(就像我上面的哥们说的,你至少需要在其他目录上执行才能遍历目录)之外,你还需要确保配置了如下内容:
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
如果您遵循上述解决方案并仅从 /var/www 创建指向主目录的符号链接,则需要确保已告知 Apache 可以遵循符号链接,方法是通过添加到FollowSymLinks
现有文档根目录的选项节。
最后,如果您在 suExec 下使用 CGI,则符号链接是您的最佳选择,因为 suExec 有一个编译的“安全”路径。不过,如果您使用的是 Debian 发行版,那么有一种简单的方法可以解决这个问题。
另一种方法是仅定义一个指向您的主目录的基于新名称的虚拟主机。