您如何解决该错误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
:
注释以下几行:
#LoadModule security2_module modules/mod_security2.so #LoadModule unique_id_module modules/mod_unique_id.so
重新启动 Apache 服务器:
apachectl -k restart
现在您应该可以
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 良好配合。