Skip to content

Commit 7ba62ae

Browse files
committed
update the rest files of 07-git-tools module and complete the revision
1 parent ca04f97 commit 7ba62ae

File tree

6 files changed

+501
-243
lines changed

6 files changed

+501
-243
lines changed

book/07-git-tools/sections/credentials.asc

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,22 @@
77
Ωστόσο, αυτό δεν είναι δυνατό με τα πρωτόκολλα HTTP —κάθε σύνδεση χρειάζεται ένα όνομα χρήστη και έναν κωδικό πρόσβασης.
88
Αυτό γίνεται ακόμα πιο δύσκολο για συστήματα με ταυτοποίηση δύο παραγόντων, όπου το διακριτικό (token) που χρησιμοποιούμε για έναν κωδικό πρόσβασης παράγεται τυχαία και δεν μπορεί να ωθηθεί.
99

10-
Ευτυχώς, το Git διαθέτει ένα σύστημα διαπιστευτηρίων που μπορεί να μας βοηθήσει σε αυτό το πρόβλημα με περισσότερες από μία επιλογές:
10+
Ευτυχώς, το Git διαθέτει ένα σύστημα διαπιστευτηρίων που μπορεί να μας βοηθήσει σε αυτό το πρόβλημα.
11+
Το Git προσφέρει τις παρακάτω επιλογές:
1112

1213
* Η προεπιλογή είναι να μην αποθηκεύει καθόλου διαπιστευτήρια.
1314
  Κάθε σύνδεση θα μας ζητάει το όνομα χρήστη και τον κωδικό πρόσβασής μας.
1415
* Κατά τη λειτουργία "`cache`" διατηρεί τα διαπιστευτήρια στη μνήμη για ορισμένο χρονικό διάστημα.
1516
  Κανένας από τους κωδικούς πρόσβασης δεν αποθηκεύεται ποτέ στον δίσκο και οι κωδικοί πρόσβασης διαγράφονται από την προσωρινή μνήμη μετά από 15 λεπτά.
16-
* Κατά τη λειτουργία "`store`" τα διαπιστευτήρια αποθηκεύονται σε ένα αρχείο απλού κειμένου στον δίσκο και δεν εκπνέουν ποτέ.
17+
* Κατά τη λειτουργία "`store`" τα διαπιστευτήρια αποθηκεύονται σε ένα αρχείο απλού κειμένου στον δίσκο και δεν λήγουν ποτέ.
1718
  Αυτό σημαίνει ότι μέχρι να αλλάξουμε τον κωδικό πρόσβασης για τον κεντρικό υπολογιστή Git, δεν θα χρειαστεί ποτέ να πληκτρολογήσουμε ξανά τα διαπιστευτήριά μας.
1819
  Το μειονέκτημα αυτής της προσέγγισης είναι ότι οι κωδικοί πρόσβασης αποθηκεύονται σε αρχείο απλού κειμένου στον προσωπικό μας κατάλογο.
1920
* Εάν χρησιμοποιούμε Mac, το Git έρχεται με τη λειτουργία "`osxkeychain`", η οποία αποθηκεύει τα διαπιστευτήρια στην ασφαλή κλειδοθήκη (keychain) που είναι συνδεδεμένη με το λογαριασμό μας στο σύστημα.
2021
  Αυτή η μέθοδος αποθηκεύει τα διαπιστευτήριά μας στον δίσκο και δεν λήγει ποτέ, αλλά είναι κρυπτογραφημένα με το ίδιο σύστημα που αποθηκεύει τα πιστοποιητικά HTTPS και την αυτόματη συμπλήρωση του Safari.
21-
* Εάν χρησιμοποιούμε Windows, μπορούμε να εγκαταστήσουμε έναν βοηθό που ονομάζεται "`winstore`".
22+
* Εάν χρησιμοποιούμε Windows, μπορούμε να ενεργοποιήσουμε το *Git Credential Manager* χαρακτηριστικό όταν εγκαθηστούμε το Git https://gitforwindows.org/[Git για Windows] ή σε ξεχωριστή εγκατάσταση https://github.com/git-ecosystem/git-credential-manager/releases/latest[the latest GCM] ως αυτόνομο service.
2223
  Είναι παρόμοιος με τον βοηθό "`osxkeychain`" που περιγράφεται παραπάνω, αλλά χρησιμοποιεί το Windows Credential Store (Χώρος Αποθήκευσης Διαπιστευτηρίων) για τον έλεγχο ευαίσθητων πληροφοριών.
23-
  Διατίθεται στη διεύθυνση https://gitcredentialstore.codeplex.com[].
24+
Μπορεί επίσης να εξυπηρετήση διαπιστευτήρια για WSL1 ή WSL2.
25+
Βλ. https://github.com/git-ecosystem/git-credential-manager#readme[GCM Οδηγίες Εγκατάστασης] για περισσότερες πληροφορίες.
2426

2527
Μπορούμε να επιλέξουμε μία από αυτές τις μεθόδους ρυθμίζοντας την τιμή μίας μεταβλητής διαμόρφωσης του Git:
2628

@@ -36,7 +38,7 @@ $ git config --global credential.helper cache
3638

3739
[source,console]
3840
----
39-
$ git config --global credential.helper store --file ~/.my-credentials
41+
$ git config --global credential.helper 'store --file ~/.my-credentials'
4042
----
4143

4244
Το Git ακόμη μας επιτρέπει να ρυθμίσουμε διάφορους βοηθούςς.
@@ -138,13 +140,13 @@ password=s3cre7
138140

139141
Το αρχείο `~/git.store` τώρα μοιάζει με αυτό:
140142

141-
[source]
143+
[source,ini]
142144
----
143145
https://bob:s3cre7@mygithost
144146
----
145147

146148
Είναι μόνο για μια σειρά γραμμών, καθεμία από τις οποίες περιέχει μια διεύθυνση URL διακοσμημένη με διαπιστευτήρια.
147-
Οι βοηθοί `osxkeychain` και `winstore` χρησιμοποιούν την εγγενή μορφή των καταστημάτων υποστήριξης, ενώ η `cache` χρησιμοποιεί τη δική της μορφή μνήμης (η οποία δεν μπορεί να διαβάσει καμία άλλη διαδικασία).
149+
Οι βοηθοί `osxkeychain` και `wincred` χρησιμοποιούν την εγγενή μορφή των καταστημάτων υποστήριξης, ενώ η `cache` χρησιμοποιεί τη δική της μορφή μνήμης (η οποία δεν μπορεί να διαβάσει καμία άλλη διαδικασία).
148150

149151
==== Μία εξατομικευμένη προσωρινή μνήμη διαπιστευτηρίων
150152

@@ -155,24 +157,25 @@ https://bob:s3cre7@mygithost
155157
Κανένας από τους υπάρχοντες βοηθούς δεν καλύπτει αυτήν την περίπτωση· ας δούμε τι θα χρειαζόταν για να γράψουμε το δικό μας.
156158
Υπάρχουν πολλά χαρακτηριστικά-κλειδά που πρέπει να έχει ένα τέτοιο πρόγραμμα:
157159

158-
. Η μόνη ενέργεια την οποία πρέπει να προσέξουμε πολύ είναι η `get`· Οι `store` και `erase` είναι λειτουργίες εγγραφής, επομένως απλά θα τερματίσουμε χωρίς έξοδο όταν τις λάβουμε.
160+
. Η μόνη ενέργεια την οποία πρέπει να προσέξουμε πολύ είναι η `get`· οι `store` και `erase` είναι λειτουργίες εγγραφής, επομένως απλά θα τερματίσουμε χωρίς έξοδο όταν τις λάβουμε.
159161
. Η μορφή αρχείου του αρχείου κοινόχρηστων διαπιστευτηρίων είναι ίδια με αυτήν που χρησιμοποιείται από την `git-credential-store`.
160162
. Η τοποθεσία αυτού του αρχείου είναι αρκετά τυπική, αλλά θα πρέπει να δώσουμε τη δυνατότητα στον χρήστη να δίνει άλλη διαδρομή στην περίπτωση που το θέλει.
161163

162164
Επαναλαμβάνουμε ότι θα γράψουμε αυτήν την επέκταση σε Ruby, αλλά οποιαδήποτε γλώσσα θα λειτουργήσει εφόσον το Git μπορεί να εκτελέσει το τελικό προϊόν.
163165
Εδώ είναι ο πλήρης πηγαίος κώδικας του νέου μας βοηθού διαπιστευτηρίων:
164166

165167
[source,ruby]
166-
--------
168+
----
167169
include::../git-credential-read-only[]
168-
--------
170+
----
169171

170-
<1> Εδώ αναλύουμε τις επιλογές της γραμμής εντολών, επιτρέποντας στον χρήστη να καθορίσει το αρχείο εισόδου. Η προεπιλογή είναι `~/.git-credentials`.
172+
<1> Εδώ αναλύουμε τις επιλογές της γραμμής εντολών, επιτρέποντας στον χρήστη να καθορίσει το αρχείο εισόδου.
173+
Η προεπιλογή είναι `~/.git-credentials`.
171174
<2> Αυτό το πρόγραμμα αποκρίνεται μόνον εάν η ενέργεια είναι `get` και το αρχείο backing-store υπάρχει.
172175
<3> Αυτός ο βρόχος διαβάζει από την stdin μέχρι να συναντήσει την πρώτη κενή γραμμή.
173176
    Οι είσοδοι αποθηκεύονται στο πίνακα αναζήτηση `known` για μεταγενέστερη αναφορά.
174177
<4> Αυτός ο βρόχος διαβάζει τα περιεχόμενα του αρχείου αποθήκευσης αναζητώντας αντιστοιχίες.
175-
    Εάν το πρωτόκολλο και ο κεντρικός υπολογιστής από τη μεταβλητή `known` ταιριάζουν με αυτήν τη γραμμή, το πρόγραμμα εκτυπώνει τα αποτελέσματα στην stdout και τερματίζει.
178+
    Εάν το πρωτόκολλο και ο κεντρικός υπολογιστής από τη μεταβλητή `known` ταιριάζουν με αυτήν τη γραμμή, το πρόγραμμα εκτυπώνει τα αποτελέσματα στην stdout και τερματίζει.
176179

177180
Αποθηκεύουμε τον βοηθό μας ως `git-credential-read-only`, τον βάζουμε κάπου στο `PATH` μας και τον επισημόνουμε ως εκτελέσιμο.
178181
Ακολουθεί μια διαδραστική συνεδρία:
@@ -182,6 +185,7 @@ include::../git-credential-read-only[]
182185
$ git credential-read-only --file=/mnt/shared/creds get
183186
protocol=https
184187
host=mygithost
188+
username=bob
185189
186190
protocol=https
187191
host=mygithost
@@ -193,8 +197,7 @@ password=s3cre7
193197

194198
[source,console]
195199
----
196-
$ git config --global credential.helper read-only --file /mnt/shared/creds
200+
$ git config --global credential.helper 'read-only --file /mnt/shared/creds'
197201
----
198202

199203
Όπως μπορούμε να δούμε, η επέκταση αυτού του συστήματος είναι αρκετά απλή και μπορεί να λύσει μερικά κοινά προβλήματα για εμάς και την ομάδα μας.
200-

0 commit comments

Comments
 (0)