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