Gitosis

Arch Linux Türkiye Belgeleri sitesinden
Atla: kullan, ara


Konu başlıkları

gitosis nedir?

gitosis, basitçe, git adlı sürüm yönetimi yazılımı için kullanılabilecek bir yetkilendirme yönetim listesidir. Bir git deposuna sahip olduğunuzda, bu depoya kimlerin erişebileceğini ayarlayabilmeniz için bir sürü yol vardır. Örneğin deponuzu yalnızca okunabilir olarak git:// protokolü üzerinden sunabilirsiniz. Öte yandan depoya yazma hakkı söz konusu olduğunda kimin, nasıl deponuza erişeceği önem kazanır. Genellikle herkesin yazmasına ve dolayısıyla depomuzu mahvetmesine izin veremeyiz. Bu amaçla geliştirilmiş yetkilendirme yollarından bazıları:

  • SSH Yetkilendirmesi
  • HTTP Yetkilendirmesi (webdav)
  • gitosis (SSH üzerinden)

Bu belgenin geri kalanı üçüncü metod üzerine yoğunlaşacak; ne de olsa başlık da bunu söylüyor.

gitosis tam olarak ne yapar?

gitosis ile sisteminizde tanımlı tek bir kullanıcı ile deponuzu indirebilir ve gönderim yapabilirsiniz. Deponuza yazma hakkı olacak her kullanıcı için birer SSH hesabı açmak zorunda kalmazsınız. Aşağıda da bahsettiğim paketi kurduğunuzda, sisteminizde ev dizini /srv/gitosis/ olan, gitosis adında bir sistem kullanıcısı oluşturulur. Depolarınıza erişecek kullanıcılar tüm işlemlerini bu kullanıcı üzerinden yaparlar.

gitosis nasıl kurulur?

AUR'daki gitosis-git paketimi kullanabilirsiniz. Gerekli dosyaları indirebilir ve makepkg ile paketi derleyebilir ya da yaourt gibi kolay kurulum araçlarını tercih edebilirsiniz. gitosis'i derleyebilmek ve kurabilmek için sisteminizde git, python ve setuptools adlı paketlerin kurulu olması gerekiyor. Bu paketler PKGBUILD dosyasında da birer bağımlılık olarak bulunduklarından uyguladığınız kurulum metoduna göre muhtemelen otomatik olarak kurulacaklardır. Paket kurulduktan sonra, /usr/share/doc/gitosis dizini altında bir takım örnek yapılandırma dosyaları bulabilirsiniz.

gitosis-admin deposunun oluşturulması

gitosis'in çalışabilmesi için öncelikle bir SSH anahtar çifti oluşturmalı (ya da varolanı kullanmalı) ve genel anahtarınızı gitosis'in ev dizininde (/srv/gitosis) gitosis-admin deposunu oluşturmak için kullanmalısınız.

$ sudo -H -u gitosis gitosis-init < /path/to/public_key.pub
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/

Yukarıdaki komut içerisinde kullandığınız genel anahtarı ayrıca /srv/gitosis/.ssh/authorized_keys ismiyle kaydetmeniz gerekiyor. Yukarıdaki komut şu dizinleri oluşturmalı:

  • gitosis
  • repositories

gitosis adlı dizin projects.list adında, içinde depolarla ilgili bilgileri barındıran bir dosyayı bulundurur. repositories dizini ise, içerisinde gitosis-admin'in de bulunduğu tüm depoları barındırır.

gitosis-admin deposu

gitosis-admin içinde tüm depoların izinlerini ve bu izinlere sahip kullanıcıların anahtarlarını bulunduran bir git deposudur. gitosis ayarlarını değiştirmek, depo ya da kullanıcı ekleyip çıkarmak gibi işlemler için tek yapmanız gereken, deponun kopyasını indirmek ve normal bir git deposunda yapacağınız gibi istediğiniz değişiklikleri yapmaktan ibaret... Yapılandırmayla işiniz bittiğinde, değişiklikleri teslim etmeniz ve (depoyu indirdiğiniz) uzaktaki depoya göndermeniz gerekir.

$ git clone gitosis@host:gitosis-admin.git

Bu komutun çalışabilmesi için;

  • ev dizini (/srv/gitosis/) => 700
  • .ssh dizini (/srv/gitosis/.ssh/) => 700
  • authorized_keys dosyası (/srv/gitosis/.ssh/authorized_keys) => 600

yukarıda belirtilen izinlere sahip olmalıdır. Deponun kopyasını aldığınızda şu dizin yapısına sahip olacaksınız:

  • gitosis-admin
    • gitosis.conf
    • keydir
      • user_ssh_key.pub

depoların yapılandırılması

gitosis.conf

[gitosis]
gitweb = yes

[repo hede]
description = hede icin git deposu
owner = herhangi bir sey

[group gelistiriciler]
members = kullanici1 kullanici2

[group yoneticiler]
members = kullanici1

[group gitosis-admin]
writable = gitosis-admin
members = @yoneticiler

[group hede]
writable = hede
members = @gelistiriciler

gitosis depoları gitweb ile birlikte kullanılabilir; tek yapmanız gereken gitweb yapılandırma dosyasında depoların bulunduğu dizini göstermek.

  • [repo] blokları gitweb tarafından kullanılan bazı alanları tanımlamak için kullanılır.
  • [group] blokları şu ikisi için kullanılabilir:
    • kullanıcı grupları tanımlamak
    • depo izinlerini tanımlamak
  • @ karakteri, kullanıcı gruplarını tanımlamak için kullanılır.

Bu dosyada yaptığınız tüm değişiklikleri teslim etmeli ve uzaktaki sunucuya geri göndermelisiniz.

keydir

keydir, kullanıcıların genel anahtarlarının bulunduğu dizindir. Bazı anahtarlar oluşturulmaları esnasında makine adına sahip olabilirler; dolayısıyla kullanici@makine.pub şeklinde bir isme sahip olabilirler. İsmi bu şekilde olan anahtarlar, gitosis.conf dosyası içinde yine bu şekilde tanımlanmalıdır. Kullanıcı grupları tanımlamak ve bu grupları depo üyesi olarak kullanmak tavsiye edilen bir yöntemdir. Yeni kullanıcıları yetkilendirmek için anahtarları da git deposuna eklenmeli ve teslim edilip uzaktaki sunucuya gönderilmelidir.

Yeni kullanıcılar da, yukarıda depo kopyasını indirmek için kullanılan komuta benzer komutlar kullanarak depolara erişim sağlarlar.

Kişisel araçlar
GOOGLE
Diğer dillerde