【问题标题】:SVN server only allows commits when run as rootSVN 服务器仅在以 root 身份运行时允许提交
【发布时间】:2023-03-04 16:26:02
【问题描述】:

因此,截至两天前,我拥有了一个闪亮的新 SVN 服务器。我为 WebDAV 设置它没有问题。直到我尝试主持多个项目时才遇到麻烦。

起初,我将所有项目文件夹放在一个存储库中。但后来我看到了我的错误,并切换到多个存储库。我没有在每个新项目中编辑/etc/apache2/sites-available/default 文件,而是选择使用 svnserve 守护进程。

所以,问题是,当守护进程以 root 身份运行时,我只能从 Eclipse 进行提交。如果没有,我会收到一个 Permission Denied 错误。有任何想法吗?以下是目录统计信息:

    drwxr-xr-x 6 root root 4096 2011-06-07 09:38 .
    drwxr-xr-x 4 root root 4096 2011-06-05 00:48 ..
    lrwxrwxrwx 1 svn  svn     6 2011-06-06 22:35 all -> repos/
    drw-rw-r-- 6 svn  svn  4096 2011-06-06 13:53 EmpowerView
    drw-rw-r-- 6 svn  svn  4096 2011-06-06 13:54 GoogleVoicemail
    -rw-rw-r-- 2 svn  svn   307 2011-06-07 08:47 passwd
    drw-rw-r-- 6 svn  svn  4096 2011-06-06 13:54 PerlinNoise
    drw-rw-r-- 7 svn  svn  4096 2011-06-05 02:15 repos
    -rw-rw-r-- 3 svn  svn  2278 2011-06-07 08:46 svnserve.conf

编辑

我尝试了建议的重新结帐,守护程序没有以 root 身份运行,但仍然没有雪茄。同样的权限错误。

编辑 2

我也尝试以 svn 用户身份运行守护进程,但没有这样的运气。有一次,我搞砸了我的主要组,不再拥有 sudo 权限!我不得不通过好友的帐户侵入自己的服务器

编辑 3 回答

好吧,经过几个小时的修补,这是我开始工作的设置。

首先我删除了所有现有的结帐,并杀死了守护进程。 然后我将所有存储库的所有权限设置为 774(见下文) 接下来,我用这个命令运行守护进程 sudo -u svn -- svnserve -d -r /storage/svn/ 这使我可以在不输入密码的情况下以用户 'svn' 的身份运行守护程序。 (出于安全原因,svn 没有密码或外壳) 最后,我仔细检查了我所有的配置文件,并且能够完全按照希望进行检查。 仓库目录

drwxr-xr-x 6 root root 4096 2011-06-07 10:34 .
drwxr-xr-x 4 root root 4096 2011-06-05 00:48 ..
lrwxrwxrwx 1 svn  svn     6 2011-06-06 22:35 all -> repos/
drwxrwxr-- 6 svn  svn  4096 2011-06-06 13:53 EmpowerView
drwxrwxr-- 6 svn  svn  4096 2011-06-06 13:54 GoogleVoicemail
-rwxrwxr-- 2 svn  svn   307 2011-06-07 08:47 passwd
drwxrwxr-- 6 svn  svn  4096 2011-06-06 13:54 PerlinNoise
drwxrwxr-- 7 svn  svn  4096 2011-06-05 02:15 repos
-rwxrwxr-- 3 svn  svn  2273 2011-06-07 09:50 svnserve.conf

(注意:我所有的存储库共享共同的编辑器和权限,所以在每个存储库的 conf/ 文件夹中,我将硬链接放在上面的 passwd 和 svnserve.conf 文件)

【问题讨论】:

    标签: linux svn ubuntu permissions


    【解决方案1】:

    当您以 root 身份提交或签出时会发生奇怪的事情。尝试以非 root 用户身份签出给定存储库,如果可行,您应该能够在此后以普通用户身份提交。

    如果这仍然不起作用,请检查存储库本身的权限。可能未设置权限以允许非 root 用户提交访问权限。

    【讨论】:

    • 我已经发布了权限。有问题的存储库是上面列出的 EmpowerView。
    • 另外,我没有以 root 身份签出,而只是以 root 身份运行守护进程。你说的是这个吗?
    • 并且您不能按照列出的权限以“svn”用户的身份提交/签出?嗯。以 root 身份运行守护进程会为守护进程所做的一切提供 root 权限。
    • 我问的唯一原因是因为我听说以 root 身份运行守护进程不是“kosher”(良好做法)对吗?
    • 啊,我会说是的,这是正确的。您希望建立对存储库的权限,以便在没有 root 权限的情况下可以使用它们。通常,在 *nix 中,您不希望以 root 身份运行。造成这种情况的原因很多,而且不一定很明显(毕竟你为什么不想使用不受限制的访问帐户?),但你应该避免将 root 用于不需要它的事情。
    【解决方案2】:

    可能 svn 守护进程对您的存储库具有读取权限,但没有写入权限。

    首先找出 svn 守护进程在哪个用户下运行。然后将完整的存储库 chown 给该用户。这样,守护进程也可以编写您的提交。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-26
      • 2015-08-20
      • 2016-07-12
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多