代码之家  ›  专栏  ›  技术社区  ›  Michael Moussa Tejay Cardon

SVN管理员可以创建文件夹,但不能删除它们

svn
  •  1
  • Michael Moussa Tejay Cardon  · 技术社区  · 15 年前

    这真是个奇怪的问题。我正在设置一个SVN服务器,我基本上尝试执行以下规则:

    1. 默认情况下,所有用户都是只读的
    2. svnadmin可以写入根目录(创建新项目)和项目文件夹(创建中继/分支/标记目录)。
    3. 开发人员可以在//分支中创建目录,并可以将更改提交到//主干
    4. 只有管理员/项目经理才能创建发布标签

    以下是我的设置:

    SvnServ.CONF

    [general]
    anon-access = none
    auth-access = write
    password-db = passwd
    authz-db = authz
    

    通行证

    [users]
    svnadmin = svnadmin
    user1 = user1
    

    奥茨

    [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。

    以user1身份登录,尝试在根目录或/test项目中创建任何内容时被拒绝访问-好。

    作为用户1,我在主干中创建了一个文件夹并添加了一个文件-很好。

    现在,我以svnadmin身份登录并删除了文件… 但是我不能删除文件夹! 更具体地说,它说 拒绝访问

    svnadmin在整个存储库中都有rw,为什么我不能删除/test-project/trunk/?你说什么?(当然,用户1可以删除该文件夹)。

    更糟糕的是,我注意到svnadmin不能删除/test-project、/test-project/branches、/test-project/trunk或/test-project/tags。我现在在我的存储库中有了这个测试项目树,我无法摆脱它。

    我的设置有问题吗?我能做什么?

    2 回复  |  直到 12 年前
        1
  •  2
  •   Michael Moussa Tejay Cardon    15 年前

    我自己解决了这个问题,并把答案贴在这里,以方便遇到同样问题的任何人。

    显然,与运行此SVN服务器的实际Linux操作系统不同,不应该有与用户同名的组。

    奥斯

    [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
    

    这就解释了为什么 @开发人员 能够删除他们创建的所有目录 @ SvnADmin 不是;但是,它不能解释为什么 @ SvnADmin 能够在第一时间创建目录…

    …尽管我不会担心这个问题,因为我的配置正在工作。

        2
  •  -1
  •   hiten    12 年前

    它不是让它们发出呼噜声,您必须在目录名后面加上一个“/”,因为某些原因,如果结尾没有“/”,它就不是递归的。这样,您就不需要将删除权限放在顶部。