3

で偽のユーザーをブロックしたいgit commit。つまり、1 人のユーザーが自分の電子メールを他のユーザーに変更できてはなりません。ジトライトを使用しています。この機能を実装するにはどうすればよいですか? ユーザーの公開鍵を持っているので、その公開鍵に電子メール/名前をバインドできますか?

4

2 に答える 2

2

ユーザーの公開鍵を持っているので、電子メール/名前をその公開鍵にバインドできますか?

ネイティブではない:GitoliteはユーザーIDでのみ機能します(httpまたはsshセッションから抽出され、変数に設定されますGL_USER

したがって、その情報を他の場所に置く必要があります。

私が使用しているのは、ユーザーによって提供され、リポジトリのディレクトリに保存されている公開鍵gitolite/keysですgitolite-admin

公開sshキーは、次の3つの部分で構成されています。

 ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx WhateverYouWant

公開鍵の後の最後の部分は、必要なものを表すことができる文字列です。

私はユーザーにメールアドレスが入ったキーを要求します(最後に)。
次に、すべてのリポジトリにVREF(gitoliteの更新フック)user.emailを設定します。これにより、ファイルから抽出された電子メールを使用して、コミットで確認された内容が検証され~gitolite/.ssh/authorized_keysます。
そのファイルはgitoliteによって管理されており、user.nameとその電子メールの両方が含まれています(ユーザーが公開鍵を私に提供することを期待しているため)

 command=="..../gitolite-shell user-id" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx WhateverYouWant

電子メールのいずれかが正しいユーザー名と一致しない場合、VREFフックはプッシュを拒否します。


私自身のVREFCHECKID(わずかに異なる)の目的は、次のように宣言されてgitolite.confいます。

repo    @all
  RW+                            = gitoliteadm
  -     VREF/CHECKID             = @all
于 2013-01-30T13:42:48.823 に答える