我有一个使用mercurial-server的Mercurial服务器。我在access.conf
回购中修改了hgadmin
,如下所示:
deny repo=a/b
read user=x/**
read user=y/**
write repo=a/b user=x/abc
write repo=a/b user=y/z
但是用户z
仍然无法访问此回购。有什么想法吗?
答案 0 :(得分:2)
user=globpattern
:用户密钥的路径
因此z键的路径可能是错误的,或者回购路径已关闭。
在考虑请求时,mercurial-server会逐步执行
/etc/mercurial-server/access.conf
中的所有规则,然后逐步执行access.conf
中hgadmin
中的所有规则,查找符合所有条件的规则。
第一场比赛决定是否允许该请求;如果任一文件中没有匹配项,则该请求将被拒绝。
其他可能性:可能首先找到拒绝规则(适用于用户z
)。
答案 1 :(得分:2)
适用第一个匹配规则。在这种情况下,拒绝规则是第一个,因此它将首先匹配;任何用户都无权访问回购a / b,无论其他规则如何。
尝试将两个写规则置于拒绝规则之上。
另请注意,/ etc / mercurial-server / access.conf中的任何规则都将在逻辑上位于这些规则之前。
答案 2 :(得分:1)
您可能需要了解更多关于mercurial服务器的特殊情况。你不能在密钥/ hgadmin中多次复制密钥。因为在服务器端,这些密钥被编译到/var/lib/mercurial-server/.ssh/authorized_keys中。因此,如果你在密钥/中的不同密钥文件中指定相同的密钥,那么当hg执行ssh时,它将使用authorixed_keys中的密钥的第一次出现,并且probbaly仅指代repo并禁止访问另一个引用另一个文件的repos(但是具有相同的键)