FreeBSD и Debian. Установка и настройка Gitosis

FreeBSD и Debian. Установка и настройка Gitosis

Со временем я перешел с Mercurial на Git, почему это произошло я расскажу в другой статье. А сегодня я расскажу как организовать авторизацию и разграничение прав не репозитории при помощи Gitosis.

Установка и настройка Git

В любом случае нам понадобится создать группу и пользователя "git", а также установить Git.

Установка и настройка Gitosis

В свое время, на работе, мы выбрали Gitosis и не разочаровались. Решение достаточно простое, опирающееся на git-хуки и ssh-ключи, которое обеспечивает нас самым главным - разграничение прав на проекты.

Хранение публичных ключей всех пользователей в authorized_keys для предоставления доступа работает хорошо лишь на время. Когда у вас сотни пользователей это скорее похоже на пытку. Вы должны заходить на сервер каждый раз и нет никакого разграничения доступа — все перечисленные в файле имеют доступ на чтение и на запись к каждому проекту.

На этой стадии вы можете захотеть обратиться к широко используемому ПО под названием Gitosis. Gitosis — это просто набор сценариев (скриптов), который поможет вам управляться с файлом authorized_keys и реализовать простой контроль доступа. Действительно интересно, что интерфейсом для этого инструмента для добавления людей и определения доступа для них является не веб-интерфейс, а специальный git-репозиторий. Вы настраиваете информацию в этом проекте и, когда вы отправляете её в репозиторий, Gitosis исходя из неё перенастраивает сервер, что круто.

Вообщем авторизация будет по ключам, а gitosis будет контролировать политику прав. Поехали!

Установка Gitosis

Можно и из исходников, но так как разработка gitosis прекратилась осенью 2009 года, свежее всёравно не будет:

Настройка Gitosis

Для начала нам надо создать на локальной машине ключ и скопировать его на сервер:

Теперь добавьте в свой локальный ".ssh/config":

Далее, надо войти на сервер и проинициализировать gitosis:

Перейдем снова на локальную машину и попробуем подключится:

Если примерно такой ответ, то все хорошо, продолжаем!

Теперь склонируем репозиторий "gitosis-admin" к себе и отредактируем конфигурационный файл:

В полученном репозитории вы увидите каталог "keydir", в котором хранятся все публичные ключи пользователей имеющих доступ к репозиториям. Чтобы добавить пользователя, необходимо чтобы вы поместили сгенерированный им публичный ключ, а после добавили упоминание этого пользователя в файле "gitosis.conf" секция "members".

Чтобы создать новый репозиторий необходимо зайти на сервер и выполнить:

Далее, добавим в локальный файл "gitosis.conf" что-то наподобие:

Также возможно унаследовать пользователей из другой группы, например:

Вообщем в "members" надо перечислить пользователей, у которых есть доступ к репозиторию "writable". И добавить в "keydir" публичные ключи полученные от пользователей. Это всё что надо!

Для отладки самого gitsis вам может понадобится эта опция:

Gitosis читает файла настроек из этого файла "/home/git/.gitosis.conf", он симлинк на "/home/git/repositories/gitosis-admin.git/gitosis.conf". Так что вы всегда можете повлиять на конфигурационный файл gitosis'а даже если потеряли доступ к нему из вне отредактировав вручную "/home/git/repositories/.gitosis.conf".

Рекомендую также почитать Gitosis - ArchWiki.

Комментарии

Чем через отдельного git-пользователя лучше делать, чем просто по SSH для своего акка? Чем gitosis круче простого ssh, разделением прав? У него есть какой-нибудь web-интерфейс красивый, как у hgserve?

Я пробовал gitosis, но есть другая альтернатива. Я попробовал Gitolite и остался на нём. Он намного гибче в настройках

vasa_c, можно прикрутить gitlabhq: https://github.com/gitlabhq/gitlabhq

Рустам, про Gittolite сегодня расскажу, не успел вчера дописать статью о нём. И еще про GitWeb и GitLab :)

Потомучто создавать 100500 аков не надо. Тем более, тех у которых будет доступ к gitosis может не быть прав на сервере вообще.

О каком разделении прав при использовании ssh говорится? Ты вообще читал статью?

Нету, есть gitweb/gitlab и пр. Об этом позже расскажу

Какую статью? Ты вообще читал вопрос? )

В статье написано:

Что тебе непонятно?

нет, из этого - /home/git/.gitosis.conf

Зачем ты пишешь пользователя?

он же в .ssh/config прописан уже

да, можно не указывать, видимо привычка, иногда указываю автоматом, иногда нет

apt-get install gitosis пишет, что нет такого

попытался из репозитория

sudo python setup.py install пишет, ImportError: No module named setuptools

Наверное его удалили из репозитория твоей OS, какая она у тебя? В моем Debian он есть:

Используй http://adw0rd.com/2012/3/22/freebsd-debian-gitolite/ , он удобнее и функциональнее.

У меня убунту. Спасибо, буду разбираться с gitolite.

Есть гитозис на сервере и есть веб-интерфейс к нему, закрытый base-авторизацией. Там видны, соответственно, все репы, что на сервере есть. Можно как-нить некому челу дать веб-интерфейс, чтобы там только определённое количество реп было видно?

А, ну да - GitWeb. Мне что-то казалось у gitosis'а свой интерфейс.

Придумал два варианта: 1. Отдельная папка с символическими ссылками на нужные репы, отдельный gitweb-процесс и отдельный хост nginx. 2. В nginx разные пароли на разные папки.

📎📎📎📎📎📎📎📎📎📎