无法通过 http 提交到 SVN 存储库

无法通过 http 提交到 SVN 存储库

当我尝试通过 http 将项目导入我的 Subversion 存储库时,出现以下错误:

无法创建目录'/usr/local/svn/myproj/db/transactions/0-1.txn':权限被拒绝

我将 httpd LogLevel 设置为调试,并在输出末尾得到了以下内容:

[2010 年 2 月 17 日,星期三 23:56:33] [错误] [客户端 24.205.225.190] 无法创建活动 /svn/myproj/!svn/act/9c0a8481-8edd-4be0-be2d-164c700616ba。[500,#0]
[2010 年 2 月 17 日星期三 23:56:33] [错误] [客户端 24.205.225.190] 无法开始事务 [500,#13]
[2010 年 2 月 17 日,星期三 23:56:33] [错误] [客户端 24.205.225.190] 无法创建目录“/usr/local/svn/myproj/db/transactions/0-1.txn”:权限被拒绝 [500,#13]

这是我的 httpd.conf 文件的相关部分:

<Location /svn>
    DAV svn
    SVNParentPath /usr/local/svn
    AuthType Basic
    AuthName "Subversion Repositories"
    AuthUserFile /etc/svn-auth-conf
    Require valid-user
</Location>

我正在尝试使用 URL 从 NetBeans 导入项目http://myhostname/svn/myproj

我正在使用 CentOS Linux。

我在网上找到的解决此问题的方法是将存储库(及其封闭文件夹)设置为属于 apache 用户并修改其权限。我尝试了以下操作,但没有成功:

$ chown -R apache.apache /usr/local/svn
$ chmod -R 755 /usr/local/svn
$ 服务 httpd 重启

我不知道还能尝试什么。请帮忙!

答案1

我猜你已经打开了 SELinux(对于 CentOS 的默认安装来说,这是正常的)。我相信 httpd 的安全策略默认禁止它访问 之外的文件/var/www。它当然不允许访问/usr/local。使用/var/www/svn作为存储库位置将防止 SELinux 拒绝访问。

答案2

您是否已创建或移动现有存储库目录至此位置?

svnadmin 创建 /usr/local/svn/insert_your_projectname

然后更新权限

chown -R httpd:httpd /usr/local/svn
chmod -R 755 /usr/local/svn
服务 httpd 重启

答案3

您可以在 SVNParentPath /usr/local/svn 或您想要的任何路径设置 SVN,但您必须做一些事情。

按照此步骤操作。

  run command 
                chcon -t httpd_sys_content_t  /usr/local/svn

附言:氯乙烯是命令重新标记文件。

- The httpd_sys_content_t type allows the httpd process to access that file.

答案4

通过以下更改,我使其能够正常工作,尽管我不确定哪个是问题所在。

我将 svn 目录移动到 /var/www 并对 httpd.conf 文件进行了以下更改:

<位置 /svn>
    目录
    SVN父路径 /var/www/svn
    <LimitExcept 获取 PROPFIND 选项报告>
        AuthType 基本版
        AuthName“Subversion 存储库”
        认证用户文件 /etc/svn-auth-conf
        需要有效用户
    </LimitExcept>
</位置>

相关内容