截至两天前,我拥有了一个 Shiny 的新 SVN 服务器。我将其设置为 WebDAV 没有任何问题。直到我尝试托管多个项目时才遇到了麻烦。
首先,我将所有项目文件夹都放在一个存储库中。但后来我发现了我的方法中的错误,并切换到多个存储库。我选择使用 svnserve deamon,而不是在每个新项目中编辑 /etc/apache2/sites-available/default
文件。
所以,问题是,当守护进程以 root 身份运行时,我只能从 Eclipse 进行提交。如果没有,我会收到“权限被拒绝”错误。有任何想法吗?以下是目录统计信息:
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
编辑
我尝试了建议的重新 checkout ,守护进程没有以 root 身份运行,但仍然没有雪茄。同样的权限错误。
编辑2
我也尝试以用户 svn 身份运行守护进程,但没有这样的运气。有一次我搞砸了我的主要组并且不再拥有 sudo 权限!我不得不通过好友的帐户侵入我自己的服务器
编辑 3 答案
好吧,经过几个小时的修补,这是我开始工作的设置。
首先,我删除了所有现有的结账,并杀死了守护进程。 然后我将所有存储库的所有权限设置为 774(见下文) 接下来,我使用此命令运行守护程序 sudo -u svn -- svnserve -d -r/storage/svn/ 这允许我以用户“svn”身份运行守护程序,而无需输入密码。 (出于安全考虑,svn没有密码或shell) 最后,我仔细检查了所有配置文件,并且能够完全按照希望进行结帐。 存储库目录
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/文件夹中,我将硬链接(hard link)放置到上面的 passwd 和 svnserve.conf 文件)
最佳答案
可能 svn 守护进程具有对您的存储库的读取权限,但没有写入权限。
首先找出svn守护进程在什么用户下运行。然后将完整存储库 chown 给该用户。这样守护进程也可以写入您的提交。
关于linux - SVN 服务器仅允许以 root 身份运行时提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6266083/