Установка и настройка Gitolite
Gitolite— это средство для создания централизованных репозиториев для совместной разработки через Git.
Gitolite позволяет легко и безопасно размещать репозитории Git, указать права доступа не только для репозиториев, но и для веток или имён меток внутри каждого репозитория. То есть, вы можете указать, что определённые люди (или группы людей) могут отправлять (push) определённые "ссылки" (ветки или метки), а остальные нет. В Gitolite доступ осуществляется по ssh.
Термины:
- Сервером называется хост, на котором установлены git и gitolite и хранятся репозитарии.
- Для управления gitolite нужен админ — технически это обычный клиентский хост, но сам пользователь наделен расширенными правами(серверный и админский хосты могут быть одним и тем же сервером).
- Клиент- хост аналогичен на админскому хосту, но без возможности управления gitolite.
Четыре способа установки Gitolite:
- package method - установка из пакетов
- root method - вы должны быть root на сервере и нужно развернуть несколько Gitolite- серверов (не репозиториев, а именно серверов)
- non-root method - установка одного Gitolite- сервера, не требует root
- from-client - аналогичен предыдущему методу, единсвенное все команды выполняются удаленно с админ-клиентского хоста
Введение Git и Gitolite
Gitolite работает поверх SSH с использованием аутентификации через public-key (точнее, это наиболее популярная конфигурация). На сервере заводится единственный реальный пользователь, через которого будет происходить работа с репозиториями. А «магия» gitolite заключается в том, что в authorized_keys эти ключики попадают с опцией «command=[path]/gl-auth-command …». Эта опция предписывает ssh- серверу запускать указанную команду независимо от того, что реально хотел исполнить пользователь. При этом оригинальная команда сохраняется в переменной SSH_ORIGINAL_COMMAND, которую и считывает gitolite, чтобы узнать, что от него хотели.
command="/usr/local/bin/gl-auth-command username",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa дальше пошел ключ
Инсталляция Gitolite в Debian
- Установка git- сервера и Gitolite. Существует 4 способа установки Gitolite. На сервере на котором будут располагаться репозитории:
# aptitude install git gitolite
- Создание серверного git- пользователя, который будет общим для всех клиентов git. Gitolite управляет несколькими репозитариями под одной учетной записью пользователя, с использованием SSH ключей для идентификации пользователей. Конечным пользователям не нужны учетные записи на сервере, они будут входить через один общий аккаунт, который не позволит им запускать произвольные команды.
# useradd -d /home/gitserver/ -m -c 'git version control' git # passwd git
- На клиентском хосте управления gitolite можно создать нового пользователя gitadmin, либо воспользоваться уже существующим
# /usr/sbin/useradd gitadmin # passwd gitadmin
- Настраиваем Настройка и использование SSH авторизацию по rsa- ключам админ- хоста на сервер. Для этого создадим на админском компьютере ключи и скопируем их на сервер. Важно имя файла до .pub должно совпадать с именем пользователя, в этом случае имя user, поэтому при копировании переименовываем id_rsa.pub в user.pub
$ ssh-keygen -t rsa -C "gitadmin777@gmail.com" [user@client ~]$ scp ~/.ssh/id_rsa.pub user@server.example.org:/tmp/user.pub
После копирования публичного ключа, авторизация пользователя git с админского хоста должна происходить без запроса пароля на сервере.
- На сервере запускаем настройку. Инициализируем Gitolite своим ключом (этот пользователь будет администратором репозиториев)
# sudo -u git -i $ gl-setup /tmp/user.pub
- Инсталляция закончена. Остается выгрузить репозиторий gitolite-admin, в котором создаются новые репозитории. Создадим для примера новый репозиторий Test777
[user@client ~]$ git clone gitolite@server.example.org:gitolite-admin $ cd gitolite-admin $ nano conf/gitolite.conf repo gitolite-admin RW+ = user repo testing RW+ = @all repo test777 RW+ = user RW+ = @all $ git add . $ git commit -am 'Added repo Test777' $ git push origin master
Управление Gitolite
- Посмотреть какие репозитории доступны на сервере и какие права есть у вас для этих репозиториев:
$ ssh git@server.example.org info hello user, this is gitolite 2.3-1 (Debian) running on git 1.7.10.4 the gitolite config gives you the following access: R W gitolite-admin @R @W test777 @R_ @W_ testing
- В отличии от gitosis в gitolite можно предварительно не создавать репозиторий через init, достаточно добавить его в конфигурационный файл.
- @all — особая, предопределенная группа. Она описывает — в зависимости от контекста — всех аутентифицированных пользователей, или все репозитории.
- Базовые права доступа в gitolite.conf:
- R — позволяет чтение
- RW — позволяет делать push в существующий ref или создавать новый ref
- RW+ — позволяет делать «push -f» или удалять ref (т.е. уничтожать информацию)
- -(минус) — запрещает доступ
- Добавление нового пользователя. Перед добавлением нового пользователя создаем (получаем от него) его публичный ключ. После получения ключа, переименовываем его, что бы имя файла было похоже на имя_пользователя.pub. Скопируем ключ в директорию keydir. Отредактируем файл conf/gitolite.conf, для добавления нового репозитория, пользователя и прав доступа. Имена пользователей должны совпадать с имена файлов их публичных ключей, без расширения. Commit и push правок на сервер репозитория gitolite-admin.
Крупнейшая в Европе школа английского языка
Промокоды, акции и подарки, чтобы Ваше обучение было не только интересным, но и выгодным. Закажите пробный урок уже сейчас!
skyeng.ru
Онлайн школа английского языка
Английский по скайпу от 680р за урок, без заучивания правил. Эффективно! Удобно! Выгодно! Начните обучение прямо сейчас.
melene.ru
Школа английского языка по Skype
Персональные занятия по разумным ценам. Бесплатные ресурсы для студентов: разговорные клубы, блог, вебинары, книги, тест на определение уровня английского. Пробный урок бесплатно!
englex.ru