Ошибка при использовании помощника по учетным данным Git с gnome-keyring как Sudo
Я искал способ безопасного хранения учетных данных при подключении к нашему Git-серверу, который использует SSL. Я наткнулся на это предложение @james-ward (единственное изменение, которое я сделал, я обновил нашу "системную" конфигурацию вместо нашей "глобальной" конфигурации для Git ( /questions/17253558/kak-ispolzovat-git-s-integratsiej-gnome-keyring/17253577#17253577)
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
Заранее спасибо! Ричард О.
4 ответа
Иногда мне нужно запустить sudo git clone, так как иногда этого требует каталог, в котором мне нужно сделать клон. Любая помощь будет оценена
Папка, в которой вы пытаетесь клонировать репозиторий, была создана пользователем root, поэтому у вас нет прав на запись или создание папки в ней, если вы не являетесь пользователем root (sudo
), установите права доступа (chmod
или же chown
) и вы сможете клонировать в папку.
chmod 755 /path
Обратите внимание, что помимо использования sudo в 2016 году libgnome-keyring
относится только к GNOME и в настоящее время устарела ( фактически с января 2014 года).
Git 2.11+ (4 квартал 2016 года) будет включать новый помощник по учетным данным, использующий libsecret
,
См. Коммит 87d1353 (09 октября 2016 г.) Мантаса Микуленаса ( grawity
)
(Объединено Юнио С Хамано - gitster
- в коммите bfe800c, 26 октября 2016 г.)
Новый помощник по учетным данным, который общается через " libsecret " с реализациями API секретной службы XDG, был добавлен в
contrib/credential/
,оно использует
libsecret
который может поддерживать другие реализации API секретной службы XDG.
Вы можете установить
libsecret
и библиотеки разработки с:sudo apt-get install libsecret-1-0 libsecret-1-dev
Затем вам нужно построить диспетчер учетных данных
cd /usr/share/doc/git/contrib/credential/libsecret
(скопируйте папку credential/libsecret из исходного кода, если она не установлена автоматически)sudo make
Наконец, вы должны указать git на вновь созданный файл в вашей конфигурации:
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
Как отмечает mati865 в комментариях:
Следует отметить, что некоторые дистрибутивы, такие как Arch и Fedora, предоставляют помощников, доступных как в двоичном, так и в исходном формате.
- Бинарный файл Libsecret на Arch:
/usr/lib/git-core/git-credential-libsecret
, а также- Бинарный файл Libsecret на Fedora:
/usr/libexec/git-core/git-credential-libsecret
,
С помощью sudo
запускает команду как root. Это все равно что попросить вашего системного администратора, если он у вас есть, выполнить команду для вас. root
пользователь не должен делать что-либо связанное с развитием, и поэтому git
не предназначен для использования в качестве root.
После запуска команды от имени другого пользователя (root или любой другой) ожидается, что этот другой пользователь не сможет нормально общаться с вашим обычным пользователем (в частности, он не найдет здесь своего демона gnome-keyring-daemon).
Итак, ответ: "не делай этого". Если вам действительно нужно клонировать в определенном каталоге, дайте себе разрешения на этот каталог, как предложено в ответе CodeWizard. На самом деле, если вам нужно клонировать в каталог, где у вас нет разрешения, спросите себя, делаете ли вы что-то не так: в принципе, этого не должно быть (я думаю, вы уже использовали sudo
слишком много в прошлом, и это причина, по которой у вас и там есть каталоги, доступные для записи).
Проще: попробуйте git-credential-oauth, включенный во многие дистрибутивы Linux , включая Fedora, Debian и Ubuntu.
Никаких больше паролей! Больше никаких токенов личного доступа! Больше никаких SSH-ключей!
Помощник по учетным данным Git, который обеспечивает безопасную аутентификацию в GitHub, GitLab, BitBucket и других форжах с использованием OAuth.
При первом нажатии помощник откроет окно браузера для аутентификации. Последующие нажатия в течение срока службы хранилища не требуют никакого взаимодействия.
Он совместим с любым помощником хранилища, который вы выберете, например git-credential-cache или git-credential-libsecret (к сожалению, не включен в Ubuntu).