Subversion Authz - 完全访问除一个以外的所有人

时间:2011-08-10 01:17:37

标签: svn authz

我有一个客户端的subversion服务器,它使用MySQL数据库对员工进行身份验证,还有一个AuthUserFile(htpasswd)来验证其他用户(供应商)进入他们的存储库。

我需要授予对员工* = rw的完全访问权限,并且只能访问供应商的子树。 (像这样):

[/]
* = rw   #employees
vendor_user = 

[/sub-repo]
vendor_user = rw

不幸的是,尽管有更多限制性规则,例如* = rw

,SVN身份验证的设计似乎将vendor_user =级联到了所有内容

如果有人有建议,我将非常感激!

2 个答案:

答案 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文件简单),这是一种有效的工作方式。