вторник, 13 марта 2012 г.

Gitosis

Заметка посвящена тем непоняткам что мне пришлось решить в процессе настройки gitosis на сервере. Инструкций по развертыванию навалом, все копи/пасты пары инструкций уж не известно чьего авторства. Те кого занесет сюда ветром поисковика будут знать что это и для чего.
Возможно, кому-то будет достаточно посмотреть на примеры в репозитарии (и сам репозитарий). Мне не хватило.

Задача: Настроить доступ по ключу. Причем отдельные пользователи должны иметь доступ только на чтение репозитария.

Приведу конфиг с комментариями. Конфиг фейковый, пишите свой, его цель только разъяснить способ решения задачи. Очень полезным будет и рассмотрение выше описанного примера в репозитарии проекта.

Файлы ключей доступа обязаны быть с расширением .pub
  1. [gitosis]
  2. loglevel = DEBUG # дает не самый лучший, но помогающий вывод
  3.  
  4. [group gitosis-admin] # кто управляет репозитариями через gitosis
  5. writable = gitosis-admin   # имя репозитария!
  6. members = toxa@toxa-laptop # через пробел перечисляются пользователи
  7.  
  8. # ПОЛЬЗОВАТЕЛИ
  9. # пользователи определяются по именам ключей в папочке с ключами, 
  10. # т.е. toxa@toxa-laptop это файл публичного ключа keydir/toxa@toxa-laptop.pub
  11.  
  12. # определим группу разработки. 
  13. [group groupname] 
  14. # Имя группы никак не связано с именем репозитария или пользователей
  15. # главное требование -- уникальность.
  16. # это имя будет использоваться для отладочного вывода или для перекрестных ссылок
  17. writeable = workrepname # через пробел можно указать список репозитариев 
  18.                      # (без суфикса .git) куда можно писать
  19. members = toxa@toxa-laptop # через пробел указываются пользователи 
  20.                            # которым разрешена запись в вышеописанные репозитарии
  21.  
  22. # определим группу начальников которые любят читать код
  23. [group readonly_users] 
  24. members = chief1 chief2 chief3 janitor
  25. # обратите внимание на отсутствие других директив здесь
  26.  
  27. [group other_rep] # группа наблюдателей
  28. members = reader dsa-key-user @readonly_users 
  29. # эти пользователи только читают описанные ниже репы
  30. # повторюсь, существуют ключи keydir/reader.pub и keydir/dsa-key-user
  31. # впрочем, если их не будет ошибки тоже не будет
  32. # @readonly_users -- это включение мемберов из другой группы. 
  33. # Именно по этому в группе readonly_users только директива members
  34. readonly = readrepname 
  35. # репы для описанных чуть выше пользователей. Они не смогут в них ничего писать.
  36.  
  37. [group other] # другие
  38. members = reader dsa-key-user
  39. readonly = readrepname # readonly-репы для описанных чуть выше пользователей
  40. writable = otherwritablerepositary # но вот в эти репозитарии они писать могут. 
  41.  

P.S. Надеюсь, это сэкономит хотя бы кому-то несколько часов, что потратил я.

P.P.S. Как можно догадаться, проект движка в долгосрочной заморозке. Есть желание вернуться к нему летом, но загадывать не буду.


Комментариев нет: