我刚刚在我的ubuntu服务器上设置了svn。我有一个我可以登录的用户。问题是,每当我尝试对文件结构进行更改时,我都会收到权限被拒绝错误。
Can't open file '/var/www-svn/db/txn-current-lock': Permission denied
我的回购邮件位于 / var / www-svn ,该文件夹的权限为drwxr-xr-x
,用户和组 svn (我的权限很差)所以我不知道这是否正确)。我在svn上登录的用户是在svn组中,但是我无法更改文件结构。 我做错了什么?如果我将文件夹的用户和组更改为我登录的用户,它也可以。
在svnserve.conf中, anon-access 设置为 none , auth-access 设置为 write
(我通过在/ var目录中键入sudo chown -R svn:svn www-svn
来更改/ var / www-svn的所有者。)
答案 0 :(得分:19)
文件系统上的存储库文件夹必须拥有或最终具有与您的svn或apache通过web-dav 正在处理的相同Linux用户的读/写权限...
就我而言:
$ chown -R www-data:www-data /svn/reponame
答案 1 :(得分:11)
你必须为/ var / www-svn /文件夹添加SETUID位,因为在事务处理期间会有SVN运行期间生成的文件夹,用于保存由文件夹表示的事务。
这意味着简单地说就是
chmod +s -R /var/www-svn/
应该解决问题。
答案 2 :(得分:8)
svnserve deamon在我的用户下运行,而不是root用户。我杀死了在我的用户下运行的svnserve进程并以root身份重新启动它。它现在有效。
答案 3 :(得分:6)
我的问题最终是我申请了权限,然后svnadmin create
,因此需要再次设置权限。
$ sudo chown -R www-data:subversion myproject
$ sudo chmod -R g+rws myproject
答案 4 :(得分:3)
这对superuser.com来说似乎是一个问题。 乍一看,group svn对该文件夹没有写入权限。所以也许这就是问题所在。 看一下这个http://www.svnforum.org/threads/35493-Can-t-open-db-txn-current-lock-permission-denied
答案 5 :(得分:2)
如果您没有sudo权利:
在我的特定情况下,我从一个共享的Webfaction服务器迁移到另一个。复制文件必须已将整个存储库所有权分配给我的用户名,而所有者可能应该是apache,以便可以访问存储库。我无法应用任何chown apache:mygroup repo
,因为我无法访问用户apache。如果没有root访问权限,那么使其工作的唯一方法是在我的存储库根目录中chmod -R 777 .
,最终删除我无权知道的锁定文件。这最终解决了这个问题,我可以再次提交。
答案 6 :(得分:0)
最后但并非最不重要的,如果您的存储库由用户和组svn
拥有(sudo chown -R svn:svn /var/svn/repos
)
务必将可以访问它的用户添加到svn组。
vi /etc/group
svn:x:502:user1,user2
答案 7 :(得分:0)
虽然这个问题很老,但它在Google上排名较高,但在Linux上的Apache / httpd上进行颠覆却没有找到有用的解决方案。
我在Apache,CentOS linux上运行subversion。对我来说问题是由于SELinux和禁用帮助了我。
在执行此操作之前需要谨慎,因为可能不建议在生产服务器上禁用SELinux。在尝试之前请仔细阅读文档。
正如斯图尔特在评论中所建议的那样,另一种解决方案是通过更新文件权限,虽然更多细节不可用,但一些调整文件权限应该会有所帮助。
答案 8 :(得分:0)
创建的存储库缺少读取和写入权限。
chcon -R -t httpd_sys_rw_content_t / path_to_svn 例如:chcon -R -t httpd_sys_rw_content_t / opt / svn / trunk
答案 9 :(得分:0)
我遇到了完全相同的情况,但在尝试使用 EclipseIDE 提交更改时失败了。
在 Eclipse 运行时,我更改了喜欢提交到存储库的用户组。
出人意料的是,我注意到,一旦我重新启动 Eclipse,就会授予存储库的修改组/权限。我认为 Eclipse 会保持 ssh-channel 打开,并且在 ssh-channel-session 期间,修改后的 grouprights 会被忽略。
在 eclipse-restart 期间,ssh-session 被重新创建,修改后的组权限被粘贴到新的 ssh-session 以授予提交。