Apache 和 Subversion,“403:禁止”远程但本地仍然有效?

Apache 和 Subversion,“403:禁止”远程但本地仍然有效?

断电后,我的 debian 服务器正常重启了所有系统,但使用 HTTP 通过 apache2 的 SVN 服务器除外。我在这台机器上托管了一些其他服务,唯一与 apache 交互的其他服务是 trac 项目。所有托管在 /var/www 之外的网页都运行良好,我的 trac 项目(不在 /var/www 中)也运行正常。但是,我无法访问恢复的 SVN 服务器。我的部分 sites-enabled/000-default 供参考(<password_file> 已屏蔽):

<Location /svn/project1>
        DAV svn
        SVNPath /home/svn/project1
        AuthType Basic
        AuthName "Subversion Repository"
        AuthUserFile <password_file>
        Require valid-user
</Location>

模块 dav_svn 文件正在加载,并且 svnserver 守护程序正在运行。我可以执行 svn update 并在本地提交(这似乎可以正确验证我的密码并从 username@servername 进行轮询,其中 servername 是我的完整正确主机/域,而不仅仅是 localhost)。但是,从任何其他计算机或当我尝试通过 HTTP 浏览存储库时,我收到“403 Forbidden”错误。这与我能找到的唯一错误相匹配,在我的 apache 日志中显示:

(13)权限被拒绝:访问 svn/project1

因此,这通常指向文件系统权限问题,我的机器上没有防火墙或任何与 iptables 相关的事情。我最初的配置是让“svn”组成为 www-data(我的 apache 用户/组)的成员,并且我已经对 svn 项目目录和 svn 根目录(在本例中为 /home/svn)的读/写权限进行了三重检查。我尝试将权限和所有权转换为 www-data,来回反复,但无济于事。我已经验证了 apache 用户/组在整个路径上都具有 +x 权限。

我尝试将整个存储库迁移到 /var/www/svn 文件夹,并分别更改我的 apache 配置,但无济于事。我尝试将测试 index.html 页面放入我的存储库文件夹,并查看普通 apache(没有 DAV)是否可以进入并显示它们,并且它可以工作 - 使用 svn 和 www-data 所有权/组设置。

是否有我可以尝试的 DAV svn 进一步调试步骤?或者关于为什么我无法从 HTTP 远程访问我的 SVN 服务器的任何其他建议?感谢您的时间。

答案1

您应该对 SVN 使用 HTTPS。不想通过纯文本发送专有源代码。

该问题可能与类似这样的陈述有关:

order allow,deny
deny from all

它限制了对 httpd.conf 顶层的 Web 服务器上大多数文件的访问。

您应该将其添加到位置节点以覆盖它:

order allow,deny
allow from all

希望这能有所帮助... 最好的,-亨利

答案2

也请检查您的文件系统权限。您确定 Web 用户(可能是 www-data)可以访问 svn 存储库文件夹吗?

你确定 http auth 有效吗?如果你AuthUserFile在非 svn 目录上使用相同的方法,它有效吗?

答案3

嗯,答案很愚蠢。/var/www没有组 www-data 的 +x 权限;不知何故,这并没有影响任何其他托管站点,甚至没有影响该目录中的虚拟 index.html 页面。尽管 SVN 存储库不托管在该文件夹附近的任何地方,但由于我有我的,DocumentRoot /var/www这可能会导致 DAV svn 系统失败。感谢大家的帮助。

相关内容