Ошибка при использовании помощника учетных данных 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 каталоги здесь и там).