0

hg-ssh 経由でアクセスを許可した場合、ユーザーが hg リポジトリにプッシュするのを制限する方法を知っている人はいますか?

明らかなことを排除するのに役立ついくつかの詳細:

1) これは、mercurial-server をインストールするための root アクセス権がなく、必要な "hg" ユーザー名を作成できない共有ホスティングの状況です。

2) ユーザーが SSH 経由で共有ホスティング サイトに接続することを許可すると、基本的に、ユーザーは自分の公開鍵を自分の authorized_keys ファイルに保持し、自分として認証されます (つまり、ユーザーは自分の資格情報をサーバー上に持つことになります)。https://www.mercurial-scm.org/repo/hg-stable/raw-file/tipに記載されているように、authorized_keys ファイルで "command=" 句を指定することにより、アクセスを少数の hg リポジトリのみに制限できます。 /contrib/hg-ssh . ただし、ユーザーはこれらのリポジトリに完全にアクセスできます。これをプルのみのアクセスに制限できますか?

これらのいずれかが私の問題を解決します:

1) すべてのユーザーが "hg" という同じユーザー アカウントを共有しているため、mercurial-server がこの問題を何らかの形で解決することはわかっています。どうやってやっているの?root アクセスなしで同じことをセットアップできますか?

または 2) hg-ssh がコマンドラインでいくつかの権限を取得できるように、hg-ssh に追加できるパッチはありますか。「hg-ssh -read-only repo1 repo2 -read-write repo3」のようなもの。

または 3) 「hg -R {repo} serve --stdio」を取得して、プッシュを許可しないコマンド ライン オプションを取得します。

4

3 に答える 3

2

手っ取り早い方法は、command=値を次のように微調整することです。

command=hg-ssh --config hooks.pretxnchangegroup=false repo1 repo2

しかし、それはずさんに行われた AclExtension にすぎません。

于 2011-02-22T19:39:26.843 に答える
1

mercurial-server を使用すると、これを最も簡単に制御できます。root 以外のユーザーとしてインストールすることもできますが、その仕組みを理解するには少し時間がかかります。

于 2011-05-04T13:11:35.257 に答える
0

AclExtensionを使用します。これにより、ssh アクションと http アクションへのアクセスをブロックできます。また、フックによって有効化/無効化されるため、対話的にログインしているときにバイパスできます。

于 2011-02-22T19:37:21.353 に答える