Как устранить ошибку svn: access to '/repos/!svn/vcc/default' forbidden
?
Недавно я обновил сервер Fedora 13 до 16, и теперь я пытаюсь отладить ошибку доступа с сервером Subversion, работающим на Apache с mod_dav_svn.
Бег:
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, который может блокировать доступ. Как мне это изменить?
Вероятно, пользователь www (пользователь, использующий apache) не имеет прав на запись в эту папку.
Проверьте разрешения папок, например, ls -l
и убедитесь, что у пользователя www есть права на запись.
@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
со всеми остальными конфигами.)
По-видимому, обновление автоматически установило mod_security, правила которого по умолчанию фактически нарушают доступ к фиксации для SVN.
Быстрое решение было yum remove mod_security
. Очевидно, это делает его менее безопасным, но, поскольку это внутренний сервер, это нормально.
Кажется, есть разочаровывающе большое количество документации mod_security, но у меня нет недель, чтобы прочитать сотни документов, чтобы узнать, как заставить mod_security работать с SVN.