You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Apache Subversion 1.10权限配置:如何实现用户分离子文件夹可见性

解决SVN目录权限与可见性问题

我来帮你搞定这个SVN权限配置的问题,你的核心问题是没处理好权限继承和显式拒绝的逻辑,导致检出父目录时出错。要实现folderAuserA不可见、对userB可见,同时所有用户能正常访问test父目录,你需要调整authz配置如下:

[/test]
* = r

[/test/folderA]
* = 
userB = r

[/test/folderB]
* = 
userA = r

配置细节解释:

  • [/test] 父目录权限:给所有用户分配r(只读)权限,确保所有人能进入test目录,并且只能看到自己有权限的子文件夹。这里不要给rw,除非你需要所有用户都能修改test目录本身(比如新增文件或子文件夹),如果只是访问子目录,只读权限完全足够。
  • [/test/folderA] 权限限制:先通过* = 显式拒绝所有用户的访问,然后单独给userB开放r权限。这样一来,除了userB,其他用户(包括userA)对folderA没有任何权限,在查看test目录时就看不到这个文件夹,自然也无法访问。
  • [/test/folderB] 权限限制:和folderA逻辑一致,先拒绝所有用户,再给userA分配r权限,确保只有userA能看到并访问folderB

为什么之前的配置会出错?

你之前给[/test]设置了* = rw,这意味着所有用户对test及其所有子目录默认都有读写权限。然后在子目录里给userA/userB设置空权限,这并没有覆盖继承的权限——SVN的权限规则是更具体的路径配置会覆盖父路径,但空权限项相当于不做任何修改,用户依然会继承父目录的rw权限。当userA检出test时,SVN会尝试访问folderB(因为父目录有权限),但你没有明确设置userAfolderB的权限,导致权限判断冲突,从而抛出错误。而直接访问folderA时,因为父目录的权限继承,userA依然有访问权限,所以能正常下载。

额外注意事项:

  • 确保你的SVN服务器开启了权限继承覆盖(默认是开启的,无需额外配置,但如果之前有修改过相关参数需要检查)。
  • 如果需要给某些用户开放读写权限,把对应的r改成rw即可,比如userB = rw

内容的提问来源于stack exchange,提问作者james.wong

火山引擎 最新活动