Errore durante l’utilizzo di helper di credenziali Git con gnome-keyring come Sudo

Stavo cercando un modo per archiviare le credenziali in modo sicuro durante la connessione al nostro server Git che utilizza SSL. Mi sono imbattuto in questo suggerimento di @ james-ward (l’unica modifica che ho apportato è stata l’aggiornamento della configurazione di “sistema” invece della configurazione “globale” per 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 

Allora posso correre

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

e l’helper delle credenziali memorizzerà le mie credenziali, tuttavia quando eseguo quanto segue:

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

mi dà il seguente errore

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

A volte ho bisogno di eseguire sudo git clone poiché a volte la directory in cui ho bisogno di fare un clone lo richiede. Qualsiasi aiuto sarebbe apprezzato.

Versioni che sto usando: – git versione 1.9.1 – Ubuntu Server 14.0.4

Grazie in anticipo! -Richard O.

A volte ho bisogno di eseguire sudo git clone poiché a volte la directory in cui ho bisogno di fare un clone lo richiede. Qualsiasi aiuto sarebbe apprezzato

La cartella in cui provi a clonare il repository in è stata creata da root in modo da non avere il permesso di scrivere o creare una cartella al di sotto di essa a meno che tu non sia root ( sudo ), imposta i permessi ( chmod o chown ) e sarai in grado di clonare nella cartella.

 chmod 755 /path 

Oltre all’uso di sudo, si noti che nel 2016, libgnome-keyring è specifico di GNOME e ora è deprecato (dal gennaio 2014, in realtà ).

Git 2.11+ (4 ° trim. 2016) includerà un nuovo helper di credenziali utilizzando libsecret .

Vedi commit 87d1353 (09 ott 2016) di Mantas Mikulėnas ( grawity ) .
(Unita da Junio ​​C Hamano – gitster – in commit bfe800c , 26 ott 2016)

Un nuovo aiutante di credenziali che parla tramite ” libsecret ” con le implementazioni dell’API del servizio segreto XDG è stato aggiunto a contrib/credential/ .

usa libsecret che può supportare altre implementazioni dell’API del servizio segreto XDG.

  1. È ansible installare libsecret e le librerie di sviluppo con:

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

  2. Quindi è necessario creare il gestore delle credenziali

    cd /usr/share/doc/git/contrib/credential/libsecret (copia la cartella credential / libsecret dal sorgente , se non è installata automaticamente)

    sudo make

  3. Infine, dovresti puntare git sul file appena creato nella tua configurazione:

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


Come notato da mati865 nei commenti :

Va notato che alcune distro come Arch e Fedora forniscono helpers disponibili sia come binari che come sorgenti.

  • Binario di Libsecret su Arch: /usr/lib/git-core/git-credential-libsecret , e
  • Libsecret binario su Fedora: /usr/libexec/git-core/git-credential-libsecret .

Usando sudo esegue il comando come root. È come chiedere al tuo sysadmin, se ne hai uno, di eseguire un comando per te. L’utente root non ha lo scopo di fare nulla relativo allo sviluppo, e quindi git non è pensato per essere usato come root.

Una volta eseguito un comando come un altro utente (root o altro), è previsto che questo altro utente non possa comunicare normalmente con il tuo utente abituale (in particolare, non trova il tuo demone-keyring-daemon qui).

Quindi, la risposta è: “non farlo”. Se hai davvero bisogno di clonare in una particolare directory, concediti le autorizzazioni su quella directory come suggerito nella risposta di CodeWizard. In realtà, se hai bisogno di clonare in una directory dove non hai il permesso, chiediti se stai facendo qualcosa di sbagliato: in linea di principio, questo non dovrebbe accadere (la mia ipotesi è: hai già usato troppo sudo in passato e questo è il motivo per cui hai directory um-writable qui e là).