Git

Gitosis telepítése

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 ....

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.

Loading

Címkék

A szerzőről

Malina László