Ошибка при использовании помощника учетных данных Git с gnome-keyring как Sudo

Я искал способ безопасного хранения учетных данных при подключении к нашему серверу Git, который использует SSL. Я наткнулся на это предложение @james-ward (только редактирование, которое я сделал, я обновил нашу конфигурацию "system" вместо нашей "глобальной" конфигурации для Git (qaru.site/info/2742/...)

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 версия 1.9.1  - Ubuntu Server 14.0.4

Заранее благодарю! -Richard O.

Ответ 1

Мне иногда нужно запустить sudo git clone, потому что иногда требуется каталог, где мне нужно сделать клон. Любая помощь будет оценена

Папка, в которой вы пытаетесь клонировать репозиторий, была создана root, поэтому у вас нет разрешения на запись или создание папки под ней, если вы не являетесь пользователем root (sudo), установите разрешения (chmod или chown), и вы сможете клонировать в папку.

chmod 755 /path

Ответ 2

Помимо использования sudo, обратите внимание, что в 2016 году libgnome-keyring специфичен для GNOME и теперь устарел (поскольку январь 2014 года, фактически).

Git 2.11+ (Q4 2016) будет включать новый помощник учетных данных, используя libsecret.

См. [commit 87d1353] (https://github.com/git/git/commit/87d1353a6a133aafd2ef29ba6c740a8d3d71dadb) (09 октября 2016 г.) Mantas Mikulėnas (grawity).
(слияние Junio ​​C Hamano - gitster - в [commit bfe800c] (https://github.com/git/git/commit/bfe800c9d758b4dd760e8457bc79d35362b1effd), 26 октября 2016 г.

В contrib/credential/ добавлен новый помощник учетных данных, который говорит через libsecret "с реализациями XDG Secret Service API.

он использует libsecret, который может поддерживать другие реализации XDG Secret API обслуживания.

  • Вы можете установить libsecret и библиотеки разработки с помощью:

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

  • Затем вам нужно создать диспетчер учетных данных

    cd /usr/share/doc/git/contrib/credential/libsecret (скопируйте папку credential/libsecret из source, если она не установлена ​​автоматически)

    sudo make

  • Наконец, вы должны указать git на вновь созданный файл в вашем config:

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


Как отмечено mati865 в комментариях:

Следует отметить, что некоторые дистрибутивы, такие как Arch и Fedora, предоставляют помощники, доступные как двоичные, так и исходные.

  • Libsecret binary на Arch: /usr/lib/git-core/git-credential-libsecret и
  • Libsecret binary на Fedora: /usr/libexec/git-core/git-credential-libsecret.

Ответ 3

С помощью sudo выполняется команда с правами администратора. Это, как просить вашего администратора, если у вас есть, запустить команду для вас. Пользователь root не предназначен для выполнения каких-либо связанных с развитием, поэтому git не предназначен для использования как root.

Как только вы запустите команду как другой пользователь (root или любой другой), ожидается, что этот другой пользователь не сможет нормально общаться с вашим обычным пользователем (в частности, он не найдет здесь своего демона gnome-keyring-daemon).

Итак, ответ: "не делай этого". Если вам действительно нужно клонировать в определенном каталоге, дайте себе права на этот каталог, как это предлагается в ответе CodeWizard. На самом деле, если вам нужно клонировать в каталог, в котором у вас нет разрешения, спросите себя, делаете ли вы что-то неправильно: в принципе это не должно происходить (думаю, вы уже слишком сильно использовали sudo в прошлое, и именно по этой причине у вас есть um-writable каталоги здесь и там).