1

我正在尝试在 CentOS 5.8(CentOS 版本 5.8(最终版))上设置一个颠覆服务器。我对 CentOS 只有一点经验。到目前为止,我只使用过 SuSE 和 Ubuntu。

我遇到的问题是,当我尝试通过http://domain.tld/svn访问我的 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. 现在一切都很好...

4

2 回答 2

1

您必须指示 Apache 执行身份验证(以便 Subversion 将有一个用户与规则一起使用

在你的位置添加这样的东西你的<Location>指令:

SSLRequireSSL

AuthType Basic
AuthPAM_Enabled on 
AuthName "Subversion"
AuthUserFile /etc/shadow
Require valid-user

此示例使用 PAM,但还有许多其他可能性:请参阅 Apache httpd 手册

于 2012-07-22T15:45:36.477 回答
0

尝试这个:

<Location /svn>
    DAV svn
    SVNPath /var/www/svn
</Location>
于 2012-08-02T18:05:09.333 回答