SVN сервер на CentOS 5.8
Я пытаюсь настроить сервер Subversion на CentOS 5.8 (CentOS выпуск 5.8 (Final)). У меня есть только небольшой опыт работы с CentOS. До сих пор я работал только с SuSE и Ubuntu.
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь получить доступ к своему репозиторию SVN через http://domain.tld/svn я получаю "Запрещено, у вас нет прав доступа к /svn/ на этом сервере".
Вот шаги для моей настройки:
yum install mod_dav_svn subversion
Содержимое /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /var/www/svn
</Location>
Создать связанные пути
mkdir -p /var/www/svn && cd /var/www/svn
svnadmin create repos
chown -R apache:apache repos
service httpd restart
Я не могу понять, что не так...
Другие источники в CentOS 5.7 предложили это как дополнительный шаг:
chcon -R -t httpd_sys_content_t /var/www/svn/repos
chcon -R -t httpd_sys_rw_content_t /var/www/svn/repos
Когда я выполняю это, я получаю chcon: can't apply partial context to unlabeled file /var/www/svn/repos
Поэтому я оглянулся и нашел пользователя, который сказал, что я должен использовать
chcon -h system_u:object_r:httpd_sys_content_t /var/www/svn/repos
chcon -R -h apache:object_r:httpd_sys_content_t /var/www/svn/repos/*
вместо
chcon -R -t httpd_sys_content_t /var/www/svn/repos
поэтому я добавил также 2 строки для httpd_sys_rw_content_t
:
chcon -h system_u:object_r:httpd_sys_content_t /var/www/svn/repos
chcon -R -h apache:object_r:httpd_sys_content_t /var/www/svn/repos/*
chcon -h system_u:object_r:httpd_sys_rw_content_t /var/www/svn/repos
chcon -R -h apache:object_r:httpd_sys_rw_content_t /var/www/svn/repos/*
Проблема все еще остается...
service httpd restart
Проблема все еще остается...
РЕДАКТИРОВАТЬ
Я также добавил правила аутентификации в subversion.conf:
<LimitExcept GET PROPFIND OPTIONS REPORT>
AuthzSVNAccessFile /etc/subversion/svn-access
# Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /etc/subversion/svn-passwd
Require valid-user
</LimitExcept>
Эти правила конфигурации скопированы из предыдущей установленной установки под SuSE. Файлы имеют действительный контент. Проблема все еще остается...
РЕДАКТИРОВАТЬ
Я удалил <LimitExcept GET PROPFIND OPTIONS REPORT>
а также </LimitExcept>
линии, так что аутентификация всегда применяется. Когда я теперь получаю доступ к SVN из браузера, я получаю окна HTTP-Basic-Auth. После ввода существующих и правильных учетных данных снова появляется сообщение "Запрещено". Проблема все еще остается...
РЕДАКТИРОВАТЬ
Я наконец запустил его. Я установил путь к хранилищу через SVNPath /var/www/svn/repos
вместо SVNParentPath /var/www/svn
, Сейчас все в порядке...
2 ответа
Вы должны указать Apache выполнить аутентификацию (чтобы у Subversion был пользователь для использования с правилами
В вашем месте добавить что-то подобное вам <Location>
директива:
SSLRequireSSL
AuthType Basic
AuthPAM_Enabled on
AuthName "Subversion"
AuthUserFile /etc/shadow
Require valid-user
В этом примере используется PAM, но есть много других возможностей: обратитесь к руководству по Apache httpd
Попробуй это:
<Location /svn>
DAV svn
SVNPath /var/www/svn
</Location>