Инструменты пользователя

Инструменты сайта


git_i_tolko_ssh

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

git_i_tolko_ssh [2018/12/24 07:27] (текущий)
Строка 1: Строка 1:
 +====== GIT и только SSH ======
  
 +{{htmlmetatags>​
 +metatag-description=(Простая настройка GIT с использованием протокола SSH.)
 +}}
 +
 +<note important>​Для совместной работы пары человек на закрытом проекте,​ всё, что вам нужно ― это [[SSH]]- сервер и "​голый"​ репозиторий.</​note>​
 +
 +Чтобы работать с [[Git]] сервером необязательно использовать Gitosis или Gitolite. Для работы Git по протоколу [[SSH]] достаточно установленного демона SSH. В этом случае неудобство проявляется в том, что для каждого нового пользователя GIT сервера нужно заводить системного пользователя ОС и права на чтение/​запись этих пользователей совпадают с правами на файлы репозитория (чтобы сделать push пользователь должен обладать правами на запись). Чтобы получить рабочий Git- сервер,​ к которому несколько человек имеют доступ ― просто добавьте учетные записи SSH на сервер,​ и положите голый репозиторий в место, к которому эти пользователи имеют доступ на чтение и запись. И всё.
 +
 +**Пример установки связки Git + SSH**. Все репозитории будут храниться в директории /​home/​gitsrv для которой разрешен полный доступ для всех. Пустой репозиторий создается с ключем --bare. __Для того чтобы приступить к установке любого сервера Git, вы должны экспортировать существующий репозиторий в новый «голый» репозиторий,​ т.е. репозиторий без рабочего каталога. Обычно это несложно сделать. Чтобы склонировать ваш репозиторий и создать новый «голый» репозиторий,​ выполните команду clone с параметром —bare. По существующему соглашению,​ каталоги с голыми репозиториями заканчиваются на .git.__
 +
 +  * На сервере. Создадим пользователя git с домашней директорией /​home/​gitsrv<​file>​
 +# useradd git -d /​home/​gitsrv -m
 +</​file>​Создаем пустой репозиторий empty в директории empty.git<​file>​
 +$ mkdir /​home/​gitsrv/​empty.git
 +$ cd /​home/​gitsrv/​empty.git
 +$ git --bare init
 +Initialized empty Git repository in /​opt/​gitsrv/​empty.git/​
 +</​file>​
 +  * На клиенте<​file>​
 +git clone git@your.server.git:/​home/​gitsrv/​empty.git
 +$ touch README
 +$ git add .
 +git commit -am "First initial commit."​
 +git push origin master
 +</​file>​
 +  * **Всё!!!** <wrap em>​Может понадобиться задать права (444) на файлы и директории(775) в репозиториях.</​wrap><​file bash>
 +chown -R git:git /​home/​gitsrv/;​
 +find /​home/​gitsrv -type f -exec chmod 444 {} \;
 +find /​home/​gitsrv -type d -exec chmod 775 {} \;
 +</​file>​
 +  * Дополнительно на сервере. В качестве дополнительной меры предосторожности можно ограничить возможности пользователя git только действиями связанными с Git с помощью ограниченной оболочки git-shell поставляемой вместе с Git. Для этого нужно заменить интерпретатор команд пользователя на git-shell.<​file>​
 +$ which git-shell ​
 +/​usr/​bin/​git-shell
 +# nano /etc/passwd
 +git:​x:​1002:​1002:​git version control:/​home/​gitsrv/:/​usr/​bin/​git-shell
 +</​file>​Копируем файлы с разрешенными командами,​ из всего две list и help.<​file>​
 +# cp -R /​usr/​share/​doc/​git/​contrib/​git-shell-commands /​home/​gitsrv
 +# chmod +x git-shell-commands/​help
 +# chmod +x git-shell-commands/​list
 +</​file>​
загрузка...
git_i_tolko_ssh.txt · Последние изменения: 2018/12/24 07:27 (внешнее изменение)