Linux 奇怪的Subversion权限问题

Linux 奇怪的Subversion权限问题,linux,svn,Linux,Svn,我正在尝试在CentOS 5系统上设置SVN,以便几个人可以使用存储库 我已经在/var/svnrepository创建了存储库 我添加了一个subversion用户和组,使其递归地成为存储库的所有者 我递归地将权限设置为775 我确保所有系统用户都在subversion组中 我遇到的问题是,当我进行提交时,SVN显然创建了一个名为db/current的文件,其中包含我的用户名和组。所以说我的用户名是jimbo -rwxrwxr-x 1 jimbo jimbo 11

我正在尝试在CentOS 5系统上设置SVN,以便几个人可以使用存储库

  • 我已经在
    /var/svnrepository
    创建了存储库
  • 我添加了一个
    subversion
    用户和组,使其递归地成为存储库的所有者
  • 我递归地将权限设置为775
  • 我确保所有系统用户都在
    subversion
    组中
我遇到的问题是,当我进行提交时,SVN显然创建了一个名为
db/current
的文件,其中包含我的用户名和组。所以说我的用户名是
jimbo

-rwxrwxr-x 1 jimbo      jimbo         11 Dec  2 01:09 current
然后再也没有人能查到任何东西了。他们得到一个权限被拒绝的错误

名为
db/format
的文件也存在类似问题

Can not open file /var/svnrepository/contactdb/trunk/format: Permission denied
还有谁见过这个吗?知道解决方案吗

所有存储库访问都是通过ssh进行的


奇怪的是,我以前在Linux上安装过SVN,但从来没有遇到过这个问题。我不知道这次我做的有什么不同。

您是在使用svnserve还是每个人都在使用
文件://
URI?Subversion建议
svn服务-d
应作为单个用户运行


下面是一些关于如何使多访问方法工作的说明。

注意,setGID通常设置在Subversions存储库目录及其子目录上:

drwxr-sr-x svnowner svnusers 4096 2008-11-01 .
通过chmod 775,您可以取消设置此setGID位,这就是出现问题的原因:

setGID的意思是:如果创建一个文件,组将被设置为svnusers(在我的示例中),而不是主组

我打赌你没有设置SetGID位,是吗

但是,最好更改文件夹的GID:

chmod g+s <REPO>/dir
chmod g+s/dir

最好查看一个新创建的存储库以匹配权限。

每个人都是通过ssh访问它的,如下所示:
svn co svn+ssh://host.com/var/repository
您是否遵循了文档中关于为svnserve创建包装器脚本(将umask设置为002)的建议?我并不是100%清楚,但据我所知,我并没有真正使用svnserv。通过ssh访问存储库。我打赌将主要用户组更改为svnusers会起作用,但这似乎是一种黑客行为。这意味着subversion会劫持unix权限,从根本上改变系统的安全性。这是一种黑客行为。通常在存储库目录上设置setGID位。如果设置了,则始终会设置正确的组。这似乎有效。我运行了
chmod-rg+s
。现在整个存储库是
rwxrws--subversion subversion
。用户在
subversion
组中。我们看看这是否有效。如果没有,我将研究Apache或svnserv,但我希望避免运行另一个守护程序。