我正在尝试向现有存储库添加只读 HTTP 访问权限,svn
同时仍允许通过 进行写访问svn+ssh
。
我已经安装了 Apache、mod_dav_svn 等,并将 Apache 指向svn
存储库,但是当我尝试通过 HTTP 访问存储库时,出现以下错误:
Could not open the requested SVN filesystem
当我查看 Apache 的 error_log 时,我发现它无法打开format
我的存储库中的文件。该文件可供所有人读取,但无人可写,并且似乎可以svn+ssh
访问。我该如何解决 Apache 的问题而不影响svn+ssh
开发人员的访问?
谢谢。
更新:看来这不仅限于现有的存储库。我刚刚创建了一个全新的测试存储库,chown -R apache:apache
并在其上运行,但仍然遇到同样的问题。我已验证apache
用户做对 路径上每个目录都具有执行权限format
,对 具有读取权限format
。但是,如果我在 Apache 用作文档根目录的目录树中的某个位置创建一个测试存储库,则一切正常。Apache chroot
ed(或类似程序)是否在 CentOS 5.3 上?如果是,我可以绕过它吗?再次感谢。
答案1
听起来像是 SELinux 问题...您在 /var/log/audit/audit.log 中遇到拒绝了吗?
答案2
我认为你可以通过创建一个来实现这一点SVN 版本组并将所有用户以及 apache(或 www-run,或任何运行 apache 的用户)用户放入该组。然后,您可以更改存储库的权限,使其归属于SVN 版本团体。
话虽如此,我认为首选方法是将所有内容转移到 WebDAV。原因是,为了使 svn+ssh 正常工作,用户需要对存储库具有直接写入权限,以及对服务器的 SSH 访问权限。这为存储库的损坏提供了很大的潜力,以及其他潜在的安全风险。
使用 WebDAV,用户只能通过 WebDAV 服务器执行操作。这种方法有很多优点,包括但不限于细粒度的访问控制、更多的身份验证选项、审计等。