这里真的很奇怪。我正在建立一个SVN服务器,我基本上试图执行以下规则:
以下是我的设置:
svnserve.conf的
[general] anon-access = none auth-access = write password-db = passwd authz-db = authz
passwd的
[users] svnadmin = svnadmin user1 = user1
AuthZ的
[groups] svnadmin = svnadmin developers = user1 [/] * = r @svnadmin = rw [/test-project/branches] @developers = rw [/test-project/trunk] @developers = rw
我以svnadmin身份登录并创建了/ test-project,/ test-project / trunk,/ test-project / branches和/ test-project / trunk - good。
以root1身份登录并在尝试在root或/ test-project中创建任何内容时拒绝访问 - 很好。
仍然作为user1,我在主干中创建了一个文件夹并添加了一个文件 - 好。
现在,我以svnadmin身份登录并删除了文件... 但我无法删除该文件夹!更具体地说,它表示拒绝访问
svnadmin在整个存储库上有rw,为什么我不能删除/ test-project / trunk / ??? (当然,user1可以删除该文件夹)。
更糟糕的是,我注意到svnadmin无法删除/ test-project,/ test-project / branches,/ test-project / trunk或/ test-project / tags。我现在在我的存储库中有这个测试项目树,我无法摆脱它。
我的设置有问题吗?我该怎么办?
答案 0 :(得分:2)
我自己想出来并在这里发布答案,以免遇到遇到同样问题的人。
显然,与运行此SVN服务器的实际Linux操作系统不同,您不应该拥有与用户名称相同的组。
<强> auths中强>
[groups] svnadmin = svnadmin developers = user1 [/] * = r @svnadmin = rw [/test-project/branches] @developers = rw [/test-project/trunk] @developers = rw
实际应该是......
[groups] svnadmins = svnadmin # note the pluralization of the group name developers = user1 [/] * = r @svnadmins = rw # note the pluralization of the group name [/test-project/branches] @developers = rw [/test-project/trunk] @developers = rw
这解释了为什么 @developers 能够删除他们创建的所有目录,而 @svnadmin 不是;但是,它没有解释为什么 @svnadmin 能够首先创建目录......
...虽然我不会关心这一点,因为我的配置正在运行。
答案 1 :(得分:-1)
它不是要让它们变成pural,你必须在目录名后加一个'/',由于某种原因它不是递归的,如果最后没有'/'。这样您就不需要在顶部放置删除权限。