Alapok
Gitosis talán a legjobb módszer ahhoz, hogy távolról kezeljük a git felhasználókat és tárolókat. Nem szükséges rendszergazdai beavatkozás, csupán az első telepítéshez és beállításhoz.
Csak egy ssh felhasználót kell létrehozni, a fájlszintű jogosultságok ehhez a felhasználóhoz kötődnek. Git felhasználóknak szükséges ssh kulcsot generálniuk, majd ennek nyilvános részét elküldeni az adminisztrátornak, aki integrálja a rendszerbe, majd gitosis konfigurációs fájlban nevesíti a kulcshoz (illetve a kulcs használójához) kötődő jogokat.
A Gitosis létrehoz egy gitosis-admin nevű tárolót. Ebben tárolod a kulcsokat, és egy konfigurációs fájlt, amiben egy meghatározott szintaktika szerint a tárolókat és a felhasználókat menedzseled.
Általános Gitosis adminisztráció: gitosis-admin tárolót egy (vagy több) verziómenedzser klónozza, helyi gépen módosítja, add-commit-push, és a változások azonnal érvényesülnek.
Telepítés (Ubuntu)
Egyszerű a dolgod: egy gitosis nevű programra lesz szükséged.
sudo apt-cache search gitosis gitolite - SSH-based gatekeeper for git repositories
sudo apt-get install gitosis
Ha így nem megy telepítsd a python-setuptools-t, tölstd le a gitosis-t és telepítsd manuálisan.
sudo apt-get install python-setuptools git clone git://eagain.net/gitosis.git cd gitosis sudo python setup.py install
Ezután létre kell hoznod a szerverszintű Gitosis felhasználót.
sudo adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /home/git git
FONTOS: ha az adott szerveren zároltad ssh keresztül a beléptethető felhasználók körét, akkor mindenképpen engedélyezned kell a git felhasználót.
A tárolók elérését, felhasználók azonosítását a Gitosis a rendszergazda által importált publikus kulcsok alapján végzi.
Általános munkafolyamat: a felhasználó generál egy saját rsa kulcspárt a saját gépén, majd annak publikus részét elküldi a rendszergazdának, aki azt importálja a Gitosis-ba.
Git felhasználó kulcsgenerálása
Ahhoz, hogy a git tárolókat elérhesd, kulcsot kell generálnod, amelynek publikus részét el kell küldened a rendszergazdának, hogy az hozzáadhassa a Gitosis-hoz. Egy kulcs több tárolóhoz is használható.
ssh-keygen -t rsa -C "iam@dreamdeveloper.hu" Generating public/private rsa key pair. Enter file in which to save the key (/home/malinal/.ssh/id_rsa): /home/malinal/.ssh/id_rsa_gitkey Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/malinal/.ssh/id_rsa_gitkey. Your public key has been saved in /home/malinal/.ssh/id_rsa_gitkey.pub. The key fingerprint is: 3b:54:47:f3:40:b6:38:5d:83:9b:af:b2:35:90:c8:3d The key's randomart image is: +--[ RSA 2048]----+ | .*.o | | =.* . | | + +o. | | . + +o | | S E . | | . . o . | | o o. | | ..... | | .o | +-----------------+
Gitosis inicializálása, SSH kulcs importálása
Rendszergazda az alábbiak szerint importálja a kulcsokat:
sudo -H -u git gitosis-init < /home/malinal/.ssh/id_rsa_gitkey.pub
Ne felejtsd el -H kapcsolót használni, mert ha a shell nem git felhasználó HOME környezeti változóját használja, akkor nem tudja a megfelelő helyre telepíteni a kulcsokat.
Amennyiben még nem létezett a gitosis-admin tároló (gitosis-admin.git), a Gitosis automatikusan létrehozza:
sudo -H -u git gitosis-init < /home/malinal/.ssh/id_rsa_gitkey.pub Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
Ekkor érdemes az alábbi beállítást is megejteni:
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
gitosis-admin tároló létrehozása
gitosis-admin tároló tárolja a git felhasználókkal és tárolókkal kapcsolatos konfigurációs fájlokat.
Ez a módszer lehetővé teszi a távoli adminisztrációt: akinek van írás szintű hozzáférése a gitosis-admin tárolóhoz, az egy olyan adminisztrátor, aki létrehozhat új tárolókat és beállíthatja a git felhasználók tárolókkal kapcsolatos jogosultságait.
A gitosis-admin tároló a Gitosis telepítésekor még nem jön le, csak akkor (és akkor automatikusan), amikor az első felhasználó publikus kulcsát importálod. Ez a felhasználó fog rendelkezni különféle jogokkal ahhoz, hogy a továbbiakban távolról is lehessen adminisztrálni a Git projekteket.
Az első felhasználó létrehozásakor a git user home könyvtárában az alábbiak jönnek létre (persze rendszerenként eltérhetnek a hashelt nevek):
|-- .gitosis.conf (symlink erre -> /home/git/gitosis/repositories/gitosis-admin.git/gitosis.conf) |-- .ssh | -- authorized_keys |-- gitosis | -- projects.list -- repositories -- gitosis-admin.git |-- HEAD |-- branches |-- config |-- description |-- gitosis-export | -- keydir | -- firstuser@my-publickey.local.pub |-- gitosis.conf |-- hooks | |-- applypatch-msg | |-- commit-msg | |-- post-commit | |-- post-receive | |-- post-update | |-- pre-applypatch | |-- pre-commit | |-- pre-rebase | |-- prepare-commit-msg | `-- update |-- index |-- info | -- exclude |-- objects | |-- info | -- pack | |-- pack-82e64648d14e24258fa7c569100c6805edfc314c.idx | -- pack-82e64648d14e24258fa7c569100c6805edfc314c.pack -- refs |-- heads | `-- master -- tags 15 directories, 23 files
A ~/.gitosis.conf egy symlink, amely a gitosis-admin tároló gitosis.conf konfigurációs fájljára mutat.
A ~/.ssh/authorized_keys tárolja az importált kulcsokat az alábbi formában:
command="gitosis-serve firstuser@my-publickey.local",no-port-forwarding ,no-X11-forwarding,no-agent-forwarding,no-pty ssh-dss AAAAB3NzaC1kc3MAAACBAMAgxc ....
A command=gitosis-serve utasítással csak a git clone git@SERVER:gitosis-admin.git tároló kérhető le gitosis.conf-fal. A gitosis.conf-ban konfigurálhatod azt, hogy ki mit érhet el. Miután lekérted helyi gépre, editáltad és commitoltad, pushold. A változások azonnal érvényesülnek.