38

我刚刚在我的 ubuntu 服务器上设置了 svn。我有一个可以登录的用户。问题是,每当我尝试更改文件结构时,我都会收到权限被拒绝错误。

无法打开文件“/var/www-svn/db/txn-current-lock”:
没有权限

我的仓库在/var/www-svn中,该文件夹的权限是drwxr-xr-x针对用户和组svn的(我的权限很差,所以我不知道这是否正确)。我在 svn 上登录的用户在 svn 组中,但我无法更改文件结构。我究竟做错了什么?如果我将文件夹的用户和组更改为我也登录的用户,它会起作用。

在 svnserve.conf 中,anon-access设置为noneauth-access设置为write

sudo chown -R svn:svn www-svn(我通过在 /var 目录中输入更改了 /var/www-svn 的所有者。)

4

10 回答 10

29

文件系统上的存储库文件夹必须由您的 svn 或 apache 通过 web-dav正在处理的同一 linux 用户拥有或最终具有读/写权限...

就我而言,它是:

$ chown -R www-data:www-data /svn/reponame

但在其他情况下,它可能会有所不同,比如

$ chown -R someuser:somegroup /svn/reponame

所以用适当的值替换 someuser:somegroup 。

于 2014-10-08T08:14:35.383 回答
11

您必须为 /var/www-svn/ 文件夹添加 SETUID 位,因为在事务下将有在 SVN 运行期间生成的文件夹,用于保存由文件夹表示的事务。

简而言之,这意味着

chmod +s -R /var/www-svn/

应该解决问题。

于 2011-12-10T19:11:18.703 回答
7

svnserve 守护程序在我的用户下运行,而不是以 root 身份运行。我杀死了在我的用户下运行的 svnserve 进程并以 root 身份重新启动它。现在可以了。

于 2011-12-10T19:23:17.413 回答
6

我的问题最终是我应用了权限,然后svnadmin create再次需要设置权限。

 $ sudo chown -R www-data:subversion myproject
 $ sudo chmod -R g+rws myproject
于 2013-09-30T03:19:27.007 回答
3

这似乎是 superuser.com 的一个问题。乍一看,组 svn 没有对该文件夹的写入权限。所以也许这就是问题所在。

链接不再起作用,请参阅评论以获取快速解决方案 看看这个http://www.svnforum.org/threads/35493-Can-t-open-db-txn-current-lock-permission-denied

于 2011-12-10T19:10:06.307 回答
2

如果您没有 sudo 权限:

在我的特殊情况下,我正在从一个共享的 Webfaction 服务器迁移到另一个。复制文件必须将整个存储库所有权分配给我的用户名,而所有者可能应该是 apache,以便可以访问存储库。我无法申请任何chown apache:mygroup repo内容,因为我无权访问用户 apache。如果没有 root 访问权限,使其工作的唯一方法是chmod -R 777 .在我的存储库 root 中,最终删除我无权 chown 的锁定文件。这终于解决了问题,我可以再次提交。

于 2016-11-03T10:01:50.227 回答
2

创建的存储库缺少读写权限。

chcon -R -t httpd_sys_rw_content_t /path_to_svn 例如:chcon -R -t httpd_sys_rw_content_t /opt/svn/trunk

于 2019-07-31T07:06:42.737 回答
0

最后但同样重要的是,如果您的存储库由用户和组拥有 svn

( sudo chown -R svn:svn /var/svn/repos)

确保将可以访问它的用户添加到 svn 组。 vi /etc/group

svn:x:502:user1,user2
于 2014-05-27T07:36:00.477 回答
0

虽然这个问题很老了,但它在 Google 上的排名更高,但是在 Linux 上的 Apache / httpd 上具有颠覆性的问题并没有找到有用的解决方案。

我在 Apache、CentOS linux 上运行颠覆。对我来说,问题是由于 SELinux 和禁用这对我有帮助。

在执行此操作之前需要谨慎,因为可能不建议在生产服务器上禁用 SELinux。在尝试这样做之前,请仔细阅读文档。

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Enabling_and_Disabling_SELinux-Disabling_SELinux.html

正如 Stewart 在评论中所建议的那样,另一种解决方案是更新文件权限,尽管无法获得更多详细信息,但对文件权限进行一些调整应该会有所帮助。

于 2015-05-25T11:18:34.987 回答
0

重新启动 Eclipse IDE。

在尝试使用 EclipseIDE 提交更改时,我遇到了完全相同的情况并失败了。

在 Eclipse 运行时,我更改了喜欢提交到存储库的用户组。

令人惊讶的是,我注意到,一旦我重新启动 Eclipse,就授予了存储库的修改组/权限。我认为 Eclipse 保持 ssh 通道打开,并且在 ssh 通道会话期间修改的组权限被忽略。

在 eclipse-restart 期间,ssh-session 被重新创建,修改后的组权限被粘贴到授予提交的新 ssh-session 上。

于 2021-04-10T10:43:11.310 回答