Apache Mod SVN访问被禁止

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

我最近升级了一个Fedora 13服务器到16,现在我试图debugging与mod_dav_svn使用Apache运行的Subversion服务器访问错误。

运行:

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

列出正确的文件。 但是当我去提交时,我得到的错误:

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

我的svn的Apache虚拟主机是:

 <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模块,可能会阻止访问。 我如何改变这个?

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

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

@Cerin谢谢你的回答,我刚刚在Apache的configuration中评论了以下几行,重新启动并解决了! (在我的例子中是这个文件: /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到你的仓库。

如果没有,请检查您的SELINUXconfiguration,检查此页面也https://stackoverflow.com/questions/960241/svn-permission-denied

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

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

快速解决scheme是yum remove mod_security 。 显然,这使得它不太安全,但是因为它是一个内部服务器,所以没关系。

似乎有一个令人沮丧的大量的mod_security文档 ,但我没有几个星期阅读数以百计的文档,只是为了找出如何使mod_security与SVN发挥不错。