Apache - 如何从主文件夹内的目录提供服务,而主文件夹没有任何公共权限

Apache - 如何从主文件夹内的目录提供服务,而主文件夹没有任何公共权限

我使用 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 发行版,那么有一种简单的方法可以解决这个问题。

另一种方法是仅定义一个指向您的主目录的基于新名称的虚拟主机。

相关内容