2012-04-24 4 views
1

私はGitoliteサーバーをセットアップしようとしています。 gitで迷惑をかける問題の1つは、コードをコミットするときにユーザー名がチェックされていないことです。gitフックでは、どのようにユーザーの身元を強制的に確認するのですか?

これは、user1がいくつかの偽のコードをコミットし、user2をusernameとして設定する可能性のある「アイデンティティフィッシング」につながります。それから私たちはuser2を責めます。

私はコミッターの身元と一致するようにユーザー名を検査または強制する方法を探しています。

+0

sshを使用している場合、ユーザーのフィッシングはありません – CharlesB

+3

Gitは、あるユーザーが他のユーザーが作成した作業を合法的にコミットした場合の使用例を持っています。あなたがリベースしてトピックブランチにプッシュするコミットをプッシュするとします。あなたはその状況をどのように処理したいですか? –

+1

@CharlesBユーザーが両方とも有効なsshアクセス権を持っていてもgitユーザー名を変更して別のユーザー名としてプッシュすることができる場合は、 – Ptitaw

答えて

4

あなたは使用してコミットを署名することができます:あなたはその後、任意の符号なしのコミットを拒否するために、サーバー側のgitのフックを使用することができます

git commit -S(gitの1.7.9以降のみ利用可能)。

出典:Gitのフックでhttp://phreaknerd.wordpress.com/2012/02/09/signing-git-commits-with-your-gpg-key/

+2

[このリンク](http://git.661346.n2.nabble.com/GPG-signing-for-git-commit-td2582986.html)には、各コミットの署名が「ばか」である理由についての議論があります。読む価値がある。 – simont

+2

反例:[Mike Gerwitz](http://mikegerwitz.com/about)の「[git horror story](http://mikegerwitz.com/papers/git-horror-story)」 – RubyTuesdayDONO

1

、あなたが更新され参照を取得します。 コミットツリー全体を確認してコミッター名&電子メールを得ることができます(署名されていない場合でも、それは確実ではありません)。

Gitoliteは、さまざまな情報を格納するためにenv変数を使用します。接続する人の名前を取得して確認することができます。

+1

それはそうですそれはあなたのためのスクリプトの例をいくつか持っているのは良いスタートですか? – Ptitaw

関連する問題