it-swarm-vi.tech

Lỗi khi sử dụng trình trợ giúp thông tin Git với khóa gnome như Sudo

Tôi đang tìm cách lưu trữ thông tin đăng nhập một cách an toàn trong khi kết nối với máy chủ Git của chúng tôi sử dụng SSL. Tôi đã xem qua đề xuất này bởi @ james-Ward (chỉ chỉnh sửa tôi thực hiện là tôi đã cập nhật cấu hình "hệ thống" thay vì cấu hình "toàn cầu" của chúng tôi cho 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

Sau đó tôi có thể chạy

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

và người trợ giúp thông tin sẽ lưu trữ thông tin đăng nhập của tôi, tuy nhiên khi tôi chạy như sau:

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

nó cho tôi lỗi sau

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

Đôi khi tôi cần chạy Sudo git clone vì đôi khi thư mục mà tôi cần tạo bản sao yêu cầu. Bất kỳ trợ giúp sẽ được đánh giá cao.

Phiên bản tôi đang sử dụng: - phiên bản git 1.9.1 - Máy chủ Ubuntu 14.0.4

Cảm ơn bạn trước! - Richard O.

12
Richard Oswald

Đôi khi tôi cần chạy Sudo git clone vì đôi khi thư mục mà tôi cần tạo bản sao yêu cầu. Bất kỳ trợ giúp sẽ được đánh giá cao

Thư mục mà bạn cố sao chép kho lưu trữ vào được tạo bởi root để bạn không có quyền ghi hoặc tạo thư mục bên dưới trừ khi bạn đã root (Sudo), hãy đặt quyền (chmod hoặc chown) và bạn sẽ có thể nhân bản vào thư mục.

chmod 755 /path
0
CodeWizard

Bên cạnh việc sử dụng Sudo, lưu ý rằng vào năm 2016, libgnome-keyring dành riêng cho Gnome và hiện không được dùng nữa (kể từ tháng 1 năm 2014, thực tế ).

Git 2.11+ (Q4 2016) sẽ bao gồm một người trợ giúp thông tin xác thực mới bằng cách sử dụng libsecret

Xem cam kết 87d1353 (09 tháng 10 năm 2016) bởi Mantas Mikulėnas (grawity) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster - in commit bfe800c , ngày 26 tháng 10 năm 2016)

Một người trợ giúp thông tin xác thực mới nói chuyện qua "libsecret" với việc triển khai API Dịch vụ bí mật XDG đã được thêm vào contrib/credential/.

nó sử dụng libsecret có thể hỗ trợ các triển khai khác của XDG Secret API dịch vụ.

  1. Bạn có thể cài đặt libsecret và các thư viện phát triển với:

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

  2. Sau đó, bạn cần xây dựng trình quản lý thông tin xác thực

    cd /usr/share/doc/git/contrib/credential/libsecret (sao chép thư mục cert/libsecret từ source , nếu nó không được cài đặt tự động)

    Sudo make

  3. Cuối cùng, bạn nên trỏ git vào tệp vừa tạo trong cấu hình của bạn:

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


Theo ghi chú của mati865 in các ý kiến ​​ :

Cần lưu ý rằng một số bản phân phối như Arch và Fedora cung cấp các trợ giúp có sẵn dưới dạng nhị phân và nguồn. 

  • Nhị phân Libsecret trên Arch: /usr/lib/git-core/git-credential-libsecret và 
  • Nhị phân Libsecret trên Fedora: /usr/libexec/git-core/git-credential-libsecret
44
VonC

Sử dụng Sudo chạy lệnh dưới dạng root. Nó giống như yêu cầu sysadmin của bạn, nếu bạn có, để chạy lệnh cho bạn. Người dùng root không có nghĩa là làm bất cứ điều gì liên quan đến phát triển, và do đó git không có nghĩa là được sử dụng làm root.

Khi bạn chạy một lệnh như một người dùng khác (root hoặc bất kỳ người nào khác), người dùng khác sẽ không thể giao tiếp bình thường với người dùng thông thường của bạn (đặc biệt, nó không tìm thấy gnome-keyring-daemon của bạn ở đây).

Vì vậy, câu trả lời là: "đừng làm vậy". Nếu bạn thực sự cần sao chép trong một thư mục cụ thể, hãy cung cấp cho mình quyền trên thư mục đó như được đề xuất trong câu trả lời của CodeWizard. Trên thực tế, nếu bạn cần sao chép trong một thư mục mà bạn không có quyền, hãy tự hỏi liệu bạn có làm gì sai không: về nguyên tắc, điều này không xảy ra (tôi đoán là: bạn đã sử dụng Sudo quá nhiều trong quá khứ và đây là lý do tại sao bạn có các thư mục có thể ghi được ở đây và đó).

2
Matthieu Moy