无法打开文件'svn / repo / db / txn-current-lock':权限被拒绝

我build立了一个Linux服务器,并在其上安装了Apache和SVN以及dav_svn。 现在,当我尝试使用Tortoise SVN上传到https://xxxx:x/svn/repo ,我得到

 Can't open file '/server/svn/repo/db/txn-current-lock': Permission denied 

我已经正确设置我的SSL(我可以结帐,没有问题,甚至远程端口转发)。

我猜这与Linux存储库文件夹的所有权有关,我该如何设置这个/什么是命令?

这是一个普遍的问题。 你几乎肯定会遇到权限问题。 为了解决这个问题,确保apache用户拥有读取/写入整个存储库的权限。 要做到这一点, chown -R apache:apache *chmod -R 664 *在svn仓库下的所有东西。

另外,如果你仍然陷入困境,请看这里这里


在评论中更新回答OP的附加问题:

“664”string是权限的八进制(基数8)表示。 这里有三位数字,分别表示该文件或目录的所有者其他人 (有时称为“世界”)的权限。

请注意,每个8位数字都可以用3位表示(000表示'0'到111表示'7')。 每一点意味着什么:

  • 第一位:读取权限
  • 第二位:写入权限
  • 第三位:执行权限

例如,文件上的764意味着:

  • 所有者(第一位)具有读/写/执行(7)权限
  • 组(第二位)具有读/写(6)权限
  • 其他人(第三位)已经阅读(4)许可

希望这能说明问题!

这是权限问题。 它不是apache用户的“经典”读写权限,而是selinux。

Apache不能写入标记为httpd_sys_content_t文件,只能由apache读取。

你有两种可能性:

  1. 将svn仓库文件标签为httpd_sys_content_rw_t

     chcon -R -t httpd_sys_content_rw_t /path/to/your/svn/repo 
  2. 设置selinux boolean httpd_unified --> on

     setsebool -P httpd_unified=1 

我更喜欢第二种可能性 你也可以玩与其他selinux布尔连接与httpd

 getsebool -a | grep httpd 

最近我也遇到了这个问题,就是导致它的SELinux。 我试图让颠覆后的提交通知jenkins,代码已经改变,所以jenkins将做一个生成和部署到Nexus。

我不得不做下面的工作。

1)首先我检查了SELinux是否启用:

  less /selinux/enforce 

这将输出1(开)或0(关)

2)临时禁用SELinux:

  echo 0 > /selinux/enforce 

现在testing看看它现在是否工作。

3)启用SELinux:

  echo 1 > /selinux/enforce 

更改SELinux的策略。

4)首先查看当前configuration:

  /usr/sbin/getsebool -a | grep httpd 

这将给你:httpd_can_network_connect – >closures

5)将其设置为开启,您的提交后将与SELinux配合使用:

  /usr/sbin/setsebool -P httpd_can_network_connect on 

现在应该再次工作。

例如在debian上

 sudo gpasswd -a svn-admin www-data sudo chgrp -R www-data svn/ sudo chmod -R g=rwsx svn/ 

我刚刚有这个问题

  1. 有多个用户使用相同的回购引起的问题
  2. 注销evey其他用户使用回购

希望这可以帮助

除了存储库权限之外, /tmp目录还必须可由所有用户写入。

3步你可以休耕

  1.  chmod -R 775 <repopath> --->permissions for repository 
  2.  chown -R apache:apache <repo path> ---> change owner as like svn conf file 
  3.  chcon -R -t httpd_sys_content_t /<repo path> ----> change security context for svn repositary 

尝试通过此命令/usr/sbin/setenforce 0来禁用SELinux。 在我的情况下,它解决了这个问题。