无法打开文件'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读取。
你有两种可能性:
-
将svn仓库文件标签为
httpd_sys_content_rw_t
:chcon -R -t httpd_sys_content_rw_t /path/to/your/svn/repo
-
设置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/
我刚刚有这个问题
- 有多个用户使用相同的回购引起的问题
- 注销evey其他用户使用回购
希望这可以帮助
除了存储库权限之外, /tmp
目录还必须可由所有用户写入。
3步你可以休耕
-
chmod -R 775 <repopath> --->permissions for repository
-
chown -R apache:apache <repo path> ---> change owner as like svn conf file
-
chcon -R -t httpd_sys_content_t /<repo path> ----> change security context for svn repositary
尝试通过此命令/usr/sbin/setenforce 0
来禁用SELinux。 在我的情况下,它解决了这个问题。