Apache Mod SVN 访问被禁止

Apache Mod SVN 访问被禁止

您如何解决该错误svn: access to '/repos/!svn/vcc/default' forbidden

我最近将 Fedora 13 服务器升级到 16,现在我正尝试调试使用 Apache 和 mod_dav_svn 运行的 Subversion 服务器的访问错误。

跑步:

svn ls http://myserver/repos/myproject/trunk

列出了正确的文件。但是当我提交时,出现了错误:

svn: access to '/repos/!svn/vcc/default' forbidden

我的 Apache svn 虚拟主机是:

<VirtualHost *:80>
    ServerName svn.mydomain.com
    ServerAlias svn
    DocumentRoot "/var/www/html"

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory "/var/www/html">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

    <Location /repos>
      Order allow,deny
      Allow from all
      DAV svn
      SVNPath /var/svn/repos

      SVNAutoversioning On

      # Authenticate with Kerberos
      AuthType Kerberos
      AuthName "Subversion Repository"
      KrbAuthRealms mydomain.com
      Krb5KeyTab /etc/httpd/conf/krb5.HTTP.keytab

      # Get people from LDAP
      AuthLDAPUrl ldap://ldap.mydomain.com/ou=people,dc=mydomain,dc=corp?uid

      # For any operations other than these, require an authenticated user.
      <LimitExcept GET PROPFIND OPTIONS REPORT>
         Require valid-user
      </LimitExcept>

    </Location>
</VirtualHost>

什么原因导致此错误?

编辑:在我的 /var/log/httpd/error_log 中,我看到很多这样的内容:

[Fri Jun 22 13:22:51 2012] [error] [client 10.157.10.144] ModSecurity: Warning. Operator LT matched 20 at TX:inbound_anomaly_score. [file "/etc/httpd/modsecurity.d/base_rules/modsecurity_crs_60_correlation.conf"] [line "31"] [msg "Inbound Anomaly Score (Total Inbound Score: 15, SQLi=, XSS=): Method is not allowed by policy"] [hostname "svn.mydomain.com"] [uri "/repos/!svn/act/0510a2b7-9bbe-4f8c-b928-406f6ac38ff2"] [unique_id "T@Sp638DCAEBBCyGfioAAABK"]

我不太清楚该如何理解这句话,但我将“策略不允许该方法”解释为某些安全 Apache 模块可能阻止了访问。我该如何更改此情况?

答案1

可能 www 用户(运行 apache 的用户)没有此文件夹的写权限。

例如,检查文件夹的权限ls -l并确保 www 用户具有写权限。

答案2

@Cerin 谢谢你的回答,我刚刚在 Apache 的配置中注释了以下几行,重新启动后就解决了!!(在我的情况下是这个文件:)/etc/httpd/conf.d/mod_security.conf

  1. 注释以下几行:

    #LoadModule security2_module modules/mod_security2.so
    #LoadModule unique_id_module modules/mod_unique_id.so
    
  2. 重新启动 Apache 服务器: apachectl -k restart

  3. 现在您应该可以svn commits对您的存储库进行操作了。

如果没有,请检查你的 SELINUX 配置,并检查此页面https://stackoverflow.com/questions/960241/svn-permission-denied

httpd.conf注意:文件位置可能有所不同(可以与所有其他配置合并。)

答案3

显然,升级自动安装了 mod_security,其默认规则有效地破坏了 SVN 的提交访问。

快速解决方案是yum remove mod_security。显然,这会降低其安全性,但因为它是内部服务器,所以没问题。

似乎有一个mod_security 文档量大得令人沮丧但是我没有时间花数周时间阅读数百份文档只是为了了解如何使 mod_security 与 SVN 良好配合。

相关内容