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
はまだこのリポジトリにアクセスできません。何か案は?
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
はまだこのリポジトリにアクセスできません。何か案は?
ドキュメントには次のことが記載されています。
user=globpattern
: ユーザーのキーへのパス
そのため、z のキーのパスが間違っているか、レポのパスがオフになっている可能性があります。
リクエストを検討するとき、mercurial-server は のすべてのルールを調べ
/etc/mercurial-server/access.conf
、次に のすべてのルールをaccess.conf
調べhgadmin
て、すべての条件に一致するルールを探します。
最初の一致によって、リクエストが許可されるかどうかが決まります。どちらのファイルにも一致しない場合、要求は拒否されます。
その他の可能性: 拒否ルール ( user に適用可能z
) が最初に見つかった可能性があります。
最初の一致ルールが適用されます。この例では、拒否ルールが最初であるため、最初に一致します。他のルールがこれに従っている場合でも、リポジトリ a/b へのアクセス権はユーザーに与えられません。
拒否ルールの上に 2 つの書き込みルールを配置してみてください。
また、/etc/mercurial-server/access.conf 内のルールは論理的にこれらのルールより優先されることにも注意してください。
Mercurial サーバーに関して、もう 1 つ知っておく必要がある特別なことがあります。hgadmin の keys/ でキーを複数回複製できないこと。サーバー側では、これらのキーは /var/lib/mercurial-server/.ssh/authorized_keys にコンパイルされるためです。したがって、keys/ の異なるキー ファイルに同じキーを指定すると、hg で ssh を実行すると、authorixed_keys で最初に出現したキーが使用され、おそらく最初のリポジトリのみが参照され、別のファイルを参照する別のリポジトリへのアクセスが無効になります (ただし、同じ鍵)