web-dev-qa-db-ja.com

gnome-keyringでGit資格情報ヘルパーをSudoとして使用するとエラーが発生する

SSLを使用するGitサーバーに接続しながら、資格情報を安全に保存する方法を探していました。 @ james-wardによるこの提案に出会いました(編集したのは、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

その後、私は実行することができます

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

クレデンシャルヘルパーはクレデンシャルを保存しますが、次を実行すると:

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

それは私に次のエラーを与えます

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

クローンを作成する必要があるディレクトリで必要になることがあるため、Sudo git cloneを実行する必要がある場合があります。任意の助けをいただければ幸いです。

使用しているバージョン:-git version 1.9.1-Ubuntu Server 14.0.4

前もって感謝します! -リチャード・O.

19
Richard Oswald

クローンを作成する必要があるディレクトリで必要になることがあるため、Sudo git cloneを実行する必要がある場合があります。助けていただければ幸いです

リポジトリのクローンを作成しようとするフォルダーはルートによって作成されたため、ルート(Sudo)でない限り、その下にフォルダーを作成または作成する権限はありません。権限を設定します(chmodまたはchown)を選択すると、フォルダーにクローンを作成できます。

chmod 755 /path
0
CodeWizard

Sudoの使用に加えて、2016年にlibgnome-keyringはGNOMEに固有であり、現在では非推奨になっていることに注意してください( January 2014、実際 )。

Git 2.11+(2016年第4四半期)には、libsecretを使用した新しい資格情報ヘルパーが含まれます。

commit 87d135 (2016年10月9日)by MantasMikulėnas(grawity を参照してください。
J・C浜野-gitster- in commit bfe800c 、2016年10月26日)

libsecret」を介してXDG Secret Service APIの実装と対話する新しい資格情報ヘルパーがcontrib/credential/に追加されました。

xDG Secret Service APIの他の実装をサポートできるlibsecretを使用します。

  1. libsecretと開発ライブラリを次のようにインストールできます:

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

  2. 次に、資格情報マネージャーを作成する必要があります

    cd /usr/share/doc/git/contrib/credential/libsecretcredential/libsecretフォルダーを source からコピーします(自動的にインストールされない場合))

    Sudo make

  3. 最後に、gitに設定で新しく作成されたファイルをポイントする必要があります。

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


mati865 in コメント で述べたように:

ArchやFedoraなどの一部のディストリビューションでは、バイナリとソースの両方として利用可能なヘルパーが提供されていることに注意してください。

  • ArchのLibsecretバイナリ:/usr/lib/git-core/git-credential-libsecret、および
  • FedoraのLibsecretバイナリ:/usr/libexec/git-core/git-credential-libsecret
64
VonC

Sudoを使用すると、コマンドがルートとして実行されます。システム管理者がいる場合は、システム管理者にコマンドを実行するように依頼するようなものです。 rootユーザーはnot開発関連のことを行うことを意味するため、gitnot rootとして使用することを意味します。

別のユーザー(rootまたは他のユーザー)としてコマンドを実行すると、この他のユーザーは通常のユーザーと正常に通信できないことが予想されます(特に、ここでgnome-keyring-daemonが見つかりません)。

したがって、答えは「それをしないでください」です。特定のディレクトリで本当にクローンを作成する必要がある場合は、CodeWizardの回答で提案されているように、そのディレクトリに対するアクセス許可を自分に与えます。実際、権限のないディレクトリでクローンを作成する必要がある場合は、何か間違ったことをしているかどうかを自問してください:原則として、これは起こらないはずです(私の推測では、すでにSudoも使用しています)過去に多く、これがあちこちにum-writableディレクトリがある理由です。

2
Matthieu Moy