it-swarm.com.de

Fehler beim Verwenden von Git Credential Helper mit Gnome-Keyring als Sudo

Ich suchte nach einer Möglichkeit, Anmeldeinformationen sicher zu speichern, während eine Verbindung zu unserem Git-Server hergestellt wird, der SSL verwendet. Ich bin auf diesen Vorschlag von @ james-ward gestoßen (nur die von mir vorgenommenen Änderungen betrafen die Aktualisierung unserer "System" -Konfiguration anstelle unserer "globalen" Konfiguration für Git ( https://stackoverflow.com/a/14528360/6195194 )

Sudo apt-get install libgnome-keyring-dev
cd /usr/share/doc/git/contrib/credential/gnome-keyring
Sudo make
git config --system credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

Ich kann dann rennen

git clone https://ipaddress/git/repo.git

und der Anmeldeinformations-Helfer speichert meine Anmeldeinformationen, wenn ich jedoch Folgendes ausführe:

Sudo git clone https://ipaddress/git/repo.git testfolder

es gibt mir den folgenden Fehler

** (process:3713): CRITICAL **: Error communicating with gnome-keyring-daemon

Manchmal muss ich Sudo git clone ausführen, da dies manchmal für das Verzeichnis erforderlich ist, in dem ich einen Klon erstellen möchte. Jede Hilfe wäre dankbar.

Versionen, die ich verwende: - Git-Version 1.9.1 - Ubuntu Server 14.0.4

Danke im Voraus! -Richard O.

12
Richard Oswald

Ich muss manchmal Sudo git clone ausführen, da manchmal das Verzeichnis, in dem ich einen Klon erstellen muss, dies erfordert. Jede Hilfe wäre dankbar

Der Ordner, in dem Sie versuchen, das Repository zu klonen, wurde von root erstellt, sodass Sie keine Berechtigung zum Schreiben oder Erstellen eines Ordners darunter haben, es sei denn, Sie sind root (Sudo), legen die Berechtigungen (chmod oder chown) fest und können dies tun klonen Sie in den Ordner.

chmod 755 /path
0
CodeWizard

Beachten Sie neben der Verwendung von Sudo, dass libgnome-keyring in 2016 spezifisch für GNOME ist und nun veraltet ist (seit Januar 2014, eigentlich ).

Git 2.11+ (4. Quartal 2016) enthält einen neuen Hilfsmittel-Assistenten, der libsecret verwendet. 

Siehe commit 87d1353 (09 Oct 2016) von Mantas Mikulėnas (grawity) .
(Zusammengeführt von Junio ​​C Hamano - gitster - in commit bfe800c , 26 Okt 2016)

contrib/credential/ wurde ein neuer Helfer für Anmeldeinformationen hinzugefügt, der über Implementierungen der XDG Secret Service API über "libsecret" spricht.

es verwendet libsecret, das andere Implementierungen von XDG Secret .__ unterstützen kann. Service-API.

  1. Sie können libsecret und die Entwicklungsbibliotheken installieren mit:

    Sudo apt-get install libsecret-1-0 libsecret-1-dev

  2. Dann müssen Sie den Anmeldeinformations-Manager erstellen

    cd /usr/share/doc/git/contrib/credential/libsecret (kopiere den credential/libsecret Ordner von source , falls er nicht automatisch installiert wird)

    Sudo make

  3. Schließlich sollten Sie git auf die neu erstellte Datei in Ihrer Konfiguration zeigen:

    git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret


Wie von mati865 in den Kommentaren bemerkt:

Es sei darauf hingewiesen, dass einige Distributionen wie Arch und Fedora sowohl Binär- als auch Quell-Helfer zur Verfügung stellen. 

  • Libsecret-Binary auf Arch: /usr/lib/git-core/git-credential-libsecret und 
  • Libsecret-Binärcode bei Fedora: /usr/libexec/git-core/git-credential-libsecret
44
VonC

Mit Sudo wird der Befehl als root ausgeführt. Es ist, als ob Sie Ihren Sysadmin fragen sollten, falls Sie einen haben, um einen Befehl für Sie auszuführen. Der Benutzer root ist nicht für entwicklungsbezogene Zwecke gedacht und daher git nicht als root.

Wenn Sie einen Befehl als anderer Benutzer ausführen (root oder ein anderer Benutzer), wird erwartet, dass dieser andere Benutzer nicht normal mit Ihrem normalen Benutzer kommunizieren kann (insbesondere findet er Ihren gnome-keyring-daemon hier nicht).

Die Antwort lautet also: "Tu das nicht". Wenn Sie wirklich in einem bestimmten Verzeichnis klonen müssen, geben Sie sich Berechtigungen für dieses Verzeichnis, wie in der Antwort des CodeWizard vorgeschlagen. Wenn Sie in einem Verzeichnis klonen müssen, in dem Sie keine Berechtigung haben, sollten Sie sich fragen, ob Sie etwas falsch machen: Dies sollte grundsätzlich nicht passieren (ich schätze, Sie haben Sudo in der Vergangenheit zu oft verwendet Dies ist der Grund, warum Sie hier und da umschreibbare Verzeichnisse haben.

2
Matthieu Moy