我有一个客户端的subversion服务器,它使用MySQL数据库对员工进行身份验证,还有一个AuthUserFile(htpasswd)来验证其他用户(供应商)进入他们的存储库。
我需要授予对员工* = rw
的完全访问权限,并且只能访问供应商的子树。 (像这样):
[/]
* = rw #employees
vendor_user =
[/sub-repo]
vendor_user = rw
不幸的是,尽管有更多限制性规则,例如* = rw
vendor_user =
级联到了所有内容
如果有人有建议,我将非常感激!
答案 0 :(得分:2)
我不认为这是可能的,但即便如此,我也不能说我建议做这样的事情。从安全角度来看,授予一揽子读/写访问权限然后有选择地删除权限是非常危险的。例如,如果您忘记从新添加的供应商中删除权限该怎么办?
也许您可以定义“员工”组:
[groups]
employees = user1,user2,user3
然后你可以去:
[/]
@employees = rw
vendor_user =
另外:编写一个脚本来生成/维护列表可能是明智之举。由于数据库中列出了所有用户,因此您可以使用脚本查询数据库并根据需要生成新的访问列表。
答案 1 :(得分:2)
群组肯定是要走的路,但你仍然有问题。如果您的用户无法看到根文件夹,他们将无法访问您希望他们看到的子文件夹。
出于这个原因,我在顶层构建了一个至少有意义的文件夹的repo,例如:
trunk/
client/
services/
api/
然后使用全面读取访问权限设置权限,即:
[groups]
core = user1, user2, user3
client = user4
[repo:/]
* = r
[repo:/trunk/client]
@core = rw
@client = rw
[repo:/trunk/services]
@core = rw
@client =
[repo:/trunk/api]
@core = rw
@client = r
Jared是正确的,这有其风险,你需要小心确保你的用户不要将文件丢弃到他们不应该的地方(删除文件是一种痛苦,因此我一般只使用核心用户阅读)但只要你设置repo carefuly(例如镜像树枝下的树干顶级结构以保持authz文件简单),这是一种有效的工作方式。