当我尝试通过 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> </位置>