如何在不禁用svn + ssh访问的情况下将http访问添加到现有的svn存储库?

我试图添加只读的HTTP访问到现有的svn存储库,同时仍然允许通过svn+ssh写访问。

我已经安装了Apache,mod_dav_svn等,并在svn仓库中指向Apache,但是当我尝试通过HTTP访问repo时,出现以下错误:

 Could not open the requested SVN filesystem 

当我查看Apache的error_log时,发现它无法打开我的存储库中的format文件。 该文件是每个人都可读,但没有人可以写,它似乎工作svn+ssh访问。 如何解决Apache的问题,而不会影响开发人员的svn+ssh访问?

谢谢。

更新 :看来这不限于现有的回购。 我刚刚创build了一个全新的testing回购,运行了chown -R apache:apache ,而且我仍然遇到同样的问题。 我已经validation了apache用户在format和读取format权限的方法上对每个目录具有执行权限。 但是,如果我在Apache所使用的目录树的某个位置创build一个testing回放作为文档根目录,则可以正常工作。 CentOS 5.3上的Apache chroot (或类似的)? 如果是的话,我可以绕过吗? 再次感谢。

听起来像一个SELinux的问题…你有拒绝/var/log/audit/audit.log?

我认为你可以通过创build一个svn组,并将所有的用户以及apache(或www-run,或者Apache运行的用户)用户放到组中来实现。 然后,您可以更改存储库的权限,以便它由svn组拥有。

话虽如此,我认为首选路线是将所有内容移到WebDAV。 这里的原因是,为了使svn + ssh工作,用户需要有对存储库的直接写入访问权限,以及对服务器的SSH访问权限。 这给存储库带来了很大的潜在损害,以及其他潜在的安全风险。

借助WebDAV,用户只能通过WebDAV服务器执行操作。 这种方法有很多优点,包括但不限于细粒度的访问控制,更多的authentication选项,审计等。