Git
Chapters ▾ 2nd Edition

4.5 Git na strežniku - Prikriti proces Git

Prikriti proces Git

Naslednje bomo nastavili prikriti proces (daemon), ki servira repozitorije preko “Git” protokola. To je pogosta izbira za hitro, neoverjen dostop do vaših Git podatkov. Pomnite, da ker ni overjena storitev, karkoli ponudite preko tega protokola je javno znotraj njegovega omrežja.

Če poganjate to na strežniku zunaj vašega požarnega zidu, bi moralo biti uporabljeno samo za projekte, ki so javno vidni svetu. Če je strežnik na katerem poganjate, znotraj vašega požarnega zidu, ga mogoče uporabljate za projekte, katerih veliko število ljudi ali računalnikov (stalna integracija ali zgrajeni strežniki) imajo samo bralni dostop, ko ne želite dodati ključa SSH za vsakega.

V kateremkoli primeru je protokol Git relativno enostavno nastaviti. V osnovi morate pognati ta ukaz v načinu prikritega procesa:

git daemon --reuseaddr --base-path=/opt/git/ /opt/git/

--reuseaddr omogoča strežniku ponovni zagon brez čakanja, da stare povezave pretečejo, opcija --base-path omogoča ljudem klonirati projekte brez določanja celotne poti in pot na koncu pove Git prikritemu procesu, da poišče rapozitorije za izvoz. Če poganjate požarni zid, boste morali narediti vanj tudi luknjo na portu 9418 na napravi, kjer to nastavljate.

Ta proces lahko prikrijete na število načinov, odvisno od operacijskega sistema, na katerem poganjate. Na Ubuntu napravi lahko uporabite skripto Upstart. Torej v sledeči datoteki

/etc/event.d/local-git-daemon

you put this script:

start on startup
stop on shutdown
exec /usr/bin/git daemon \
    --user=git --group=git \
    --reuseaddr \
    --base-path=/opt/git/ \
    /opt/git/
respawn

Zaradi varnostnih razlogov je močno priporočljivo, da se ta prikriti proces poganja kot uporabnik s samo bralnimi pravicami repozitorijev - to lahko naredite enostavno z ustvarjanjem novega uporabnika git-ro in pogonom prikritega procesa kot le-tega. Zaradi enostavnosti, ga bomo enostavno pognali kot istega git uporabnika, s katerim se poganja git-shell.

Ko poženete vašo napravo, se vaš Git prikriti proces začne avtomatično in ponovno odzove, če pade. Da se ga ponovno zažene brez potrebnega ponovnega zagova, lahko poženete to:

initctl start local-git-daemon

Na drugih sistemih, boste morda želeli uporabiti xinetd, skripto v vašem sistemu sysvinit ali nekaj drugega - dokler dobite tisti ukaz kot prikriti proces in nekako pregledovan.

Naslednje morate povedati Git-u, katerim repozitorijem se dovoljuje neoverjen Git strežniško osnovani dostop. To lahko naredite v vsakem repozitoriju z izdelavo datoteke poimenovane ˙git-daemon-export-ok`.

$ cd /path/to/project.git
$ touch git-daemon-export-ok

Prisotnost te datoteke pove Git-u, da je v redu ponuditi ta projekt brez overjanja.