2012-08-22 3 views
12

Experimentieren mit Git, Ich habe Gitlab für ein selbst gehostetes Repository eingerichtet und es sieht gut aus.Kann Gitlab/Gitolite korrekten Benutzernamen/E-Mail erzwingen

Die eine Sache, die mich nervt, ist, dass es scheint, dass jeder wie jeder andere Commits machen kann (zB: ein Commit vortäuschen).

also: Ich habe meine Benutzer-Setup in Gitlab haben mit einem öffentlichen Schlüssel Zugang

  • User1
  • User2

Jetzt nur die Benutzer drücken kann - ihre privaten SSH-Schlüssel verwenden - aber es scheint, Es gibt nichts zu stoppen User2 optimieren ihre gitconfig zu verpflichten unter dem Namen User1 und drängen das?

Die Geschichte in Gitlab und git -show die Committer zeigt, wie alles, was der gitconfig Text User1 war. Ich möchte, dass Gitlab den Benutzernamen, der dem schiebenden SSH-Schlüssel zugeordnet ist, stattdessen in den Verlauf stempelt, damit ich weiß, wessen SSH-Schlüssel verwendet wurde.

Das Szenario ist das Repo würde in einer Teamumgebung verwendet werden und es scheint nur ratsam, keine gefälschten Commits zu erlauben.

Ich habe einige Lesung getan und verstehen, dass in der Regel könnte man den Workflow ändert ein gesegnetes Repository haben und haben nur Committer vertraut, die das Push - aber in diesem Stadium beim Lernen git ich in einem zentralisierten bleiben will/SVN-Typ-Workflow.

Ist dies mit Haken möglich?

Es gibt eine similar question beantwortet für Gitosis aber auch das scheint nur den Committer aus einer Reihe von Benutzern zu erzwingen, die User1 Spoofing als User2 nicht stoppt - soweit ich das beurteilen kann.

PS: Vielleicht stelle ich die falsche Frage - gibt es einen Weg in Gitlab zu entdecken, welcher SSH-Schlüssel (und somit echter Benutzer) verwendet wurde, um Code in den Repo zu schieben? Es scheint nicht so von dem, was ich finden kann.

Antwort

4

-Update 2015

Wie dieser Thread erwähnt, Gitlab Unternehmen haben unter seinem git Haken an ein Projekt einen Weg verbunden zu E-Mails steuern:

Go-Einstellungen zu projizieren -> git Haken und prüft Validierung Autor E-Mail.

Jede E-Mail, die keinem bekannten Benutzer entspricht, wird abgelehnt. wenn zumindest eine der geschoben Commits


Original-Antwort (2012)

Eine partielle Art und Weise Benutzer-ID-Steuerung zu erreichen ist gitolite (die Gitlab beruht auf) lehnt die Push-to-macht nicht verpflichtet, derjenige, der es drückt.

Wenn Sie drücken, werden Sie authentifiziert (entweder basierend auf dem Namen des öffentlichen Schlüssels, der von Gitolite registriert wurde, oder auf andere Weise wie eine LDAP-Verbindung).
Sie können einen pre-receive Hook hinzufügen, der alle neuen Commits prüft und nach mindestens einem Commit mit dem richtigen Namen sucht (dh die ID des Benutzers, der die Commits drückt).
Siehe dieses pre-receive hook als ein Beispiel.

+0

Ich habe das versucht und es funktioniert fast, aber ich bekomme einen seltsamen Wert für $ GL_USER. Der Hook läuft aber mit "_remote: no commit found with Vorname_lastname_gmail_com_1345598530 als Committer Name_". Ich weiß nicht, wo diese letzte Reihe von Zahlen herkam - irgendein inneres Gitlab-Ding? Gitlab scheint nichts anderes als [ihre Web-Hooks] zu unterstützen (https://github.com/gitlabhq/gitlabhq/issues/476), also wird das vielleicht nicht für Gitlab funktionieren? – fiat

+0

Nach etwas mehr Graben ist der $ GL_USER-Wert von _firstname_lastname_gmail_com_1345598530_ die Bezeichnerspalte der 'keys'-Tabelle in der gitlab-Datenbank, die die ssh-Benutzerschlüssel speichert. Es scheint automatisch generiert und nicht über die Benutzeroberfläche einstellbar zu sein. – fiat

+0

@fiat Ich bestätige: 'GL_USER' wird mit dem Namen des öffentlichen Schlüssels, von Gitlab auf diese Weise benannt und von gitolite registriert. – VonC

Verwandte Themen