web-dev-qa-db-fra.com

Erreur lors de l'utilisation de l'assistant d'identification Git avec gnome-keyring en tant que Sudo

Je cherchais un moyen de stocker les informations d'identification en toute sécurité lors de la connexion à notre serveur Git qui utilise SSL. Je suis tombé sur cette suggestion de @ james-ward (la seule modification que j’ai faite est d’avoir mis à jour notre configuration "système" au lieu de notre configuration "globale" pour 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

Je peux alors courir

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

et l'assistant d'identification stockera mes informations d'identification, cependant, lorsque j'exécute ce qui suit:

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

ça me donne l'erreur suivante

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

J'ai parfois besoin de lancer Sudo git clone car parfois le répertoire dans lequel je dois créer un clone le requiert. Toute aide serait appréciée.

Les versions que j'utilise: - version git 1.9.1 - Ubuntu Server 14.0.4

Merci d'avance! - Richard O.

12
Richard Oswald

J'ai parfois besoin de lancer Sudo git clone car parfois le répertoire dans lequel je dois créer un clone le requiert. Toute aide serait appréciée

Le dossier dans lequel vous essayez de cloner le référentiel a été créé par la racine. Par conséquent, vous n’avez pas le droit d’écrire ou de créer un dossier, sauf si vous êtes root (Sudo), définissez les autorisations (chmod ou chown) et vous pourrez cloner dans le dossier.

chmod 755 /path
0
CodeWizard

Outre l'utilisation de Sudo, notez qu'en 2016, libgnome-keyring est spécifique à GNOME et est maintenant obsolète (depuis janvier 2014, en fait } _).

Git 2.11+ (T4 2016) inclura un nouvel assistant d'identification utilisant libsecret

Voir commit 87d1353 _ (9 octobre 2016) de Mantas Mikulėnas (grawity) .
(Fusionnée par Junio ​​C Hamano - gitster - à commit bfe800c , 26 oct 2016)

Un nouvel assistant d'identification qui parle via "libsecret" avec les implémentations de l'API XDG Secret Service a été ajouté à contrib/credential/.

il utilise libsecret qui peut supporter d’autres implémentations de XDG Secret API de service.

  1. Vous pouvez installer libsecret et les bibliothèques de développement avec:

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

  2. Ensuite, vous devez créer le gestionnaire des informations d'identification

    cd /usr/share/doc/git/contrib/credential/libsecret (copiez le dossier credential/libsecret de source , s'il n'est pas installé automatiquement)

    Sudo make

  3. Enfin, vous devriez pointer git vers le fichier nouvellement créé dans votre configuration:

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


Comme noté par mati865 _ dans les commentaires :

Il convient de noter que certaines distributions comme Arch et Fedora fournissent des aides disponibles sous forme binaire ou source. 

  • Libsecret binary sur Arch: /usr/lib/git-core/git-credential-libsecret, et 
  • Fichier binaire Libsecret sur Fedora: /usr/libexec/git-core/git-credential-libsecret
44
VonC

L'utilisation de Sudo exécute la commande en tant que root. C'est comme demander à votre administrateur système, si vous en avez un, d'exécuter une commande pour vous. L'utilisateur root est non destiné à faire quelque chose lié au développement, et donc git est non destiné à être utilisé en tant que racine.

Une fois que vous avez exécuté une commande en tant qu’autre utilisateur (racine ou autre), il est probable que cet autre utilisateur ne puisse pas communiquer normalement avec votre utilisateur habituel (en particulier, il ne trouve pas votre gnome-keyring-daemon ici).

Donc, la réponse est: "ne fais pas ça". Si vous avez vraiment besoin de cloner dans un répertoire particulier, accordez-vous des autorisations sur ce répertoire, comme suggéré dans la réponse de CodeWizard. En fait, si vous avez besoin de cloner dans un répertoire où vous n’avez pas la permission, demandez-vous si vous faites quelque chose de mal: en principe, cela ne devrait pas arriver (je suppose que vous avez déjà trop utilisé Sudo dans le passé et c’est la raison pour laquelle vous avez des répertoires en écriture um ici et là).

2
Matthieu Moy