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ó