Как открыть git bash в linux
Перейти к содержимому

Как открыть git bash в linux

  • автор:

Git. Краткое руководство по терминалу

Данное краткое руководство демонстрирует основные команды в терминале Bash:

  • Bash (Linux/Mac)
  • Git Bash (Windows)

Открытие терминала

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

Linux

В Linux достаточно щёлкнуть правой кнопкой мыши на каталоге и выбрать пункт меню Open in Terminal или Открыть в терминале :

Mac

В Mac всё немного сложнее, необходимо настроить отображение этого пункта меню в Finder.

Для этого необходимо перейти в Системные настройки , затем пункт меню Клавиатура , в разделе Службы выбрать раздел Файлы и папки и поставить флажок напротив Новый терминал по адресу папки :

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

Windows (Git Bash)

В Windows всё достаточно просто — клик правой кнопкой мыши на каталоге и выбор Git Bash Here :

Первоначальная настройка Git

После установки Git первое, что мы сделаем — укажем наши имя и адрес электронной почты. Это важно, потому как этой информацией подписывается каждый коммит (кто сделал изменения и его электронная почта). Для настройки потребуется ввести команды:

$ git config --global user.name "Thorin Oakenshield" $ git config --global user.email ereborsons@stone.com 

Если указана опция —global , настройки применятся глобально, то есть для всех ваших действий в системе Git. Без этой опции настройки применяются локально, для текущего репозитория, и не влияют на глобальные настройки.

Пути

Одно окно терминала подразумевает, что вы можете в один момент времени находиться только в одном каталоге, который называется Current Working Directory (текущий каталог), так же как и в одном открытом окне Nautilus , Finder или проводника Windows.

Вы можете выполнять команды относительно текущего каталога или относительно абсолютного пути.

Абсолютный путь — это путь, начинающийся от корня файловой системы. Корень файловой системы обозначается символом / .

Например, в Git Bash (Windows) абсолютный путь для каталога Program Files , будет чаще всего выглядеть следующим образом: /c/Program Files/ .

Для домашнего каталога в Ubuntu (Linux), абсолютный путь будет выглядеть следующим образом: /home/user/ , где user — имя пользователя.

Bash (Git Bash в том числе) используют символ / для разделения каталогов.

Ещё два специальных обозначения помимо корня файловой системы:

  • . — обозначает текущий каталог;
  • .. — обозначает родительский каталог.

Важно: в терминале символ ` ` (пробел) является символом, разделяющим команды и опции. Поэтому если в пути есть пробел, то варианта два:

  • заключать путь в кавычки, то есть «Program Files» ;
  • использовать символ backslash для экранирования пробела: Program\ Files .

Переменные окружения

Командная оболочка устанавливает ряд переменных, которые выполняют специфические функции. Так, переменная с именем PATH содержит список путей, в которых будет производиться поиск программы, если вы наберёте её название в терминале.

Для вывода содержимого конкретной переменной используется команда echo следующим образом:

$ echo $PATH 

Команда printenv позволяет отобразить все переменные окружения:

$ printenv 

Видно, что в переменных окружения содержится достаточно много информации о системе.

Автодополнение

В командных оболочках работает автодополнение по клавише Tab :

  • дополняются имена команд;
  • дополняются пути.

Используйте автодополнение, так как оно позволяет сократить время на набор команды.

Ключевые команды

В этом разделе будут описаны ключевые команды, необходимые нам для работы. Естественно, список этот далеко не полный.

Текущий рабочий каталог

pwd — сокращение от “Print Working Directory”.

Отображение текущего рабочего каталога:

Смена рабочего каталога

cd — сокращение от “Change Directory”.

Переход в определённый каталог:

path может быть как абсолютным, так и относительным путём.

Например, перейти на каталог выше:

Перейти в подкаталог src :

$ cd src 

Если перед путём нет слеша — он трактуется как относительный (относительно текущего каталога).

Листинг каталога

ls — сокращение от “List”.

Отображает листинг (содержимое каталога):

По умолчанию, ls не отображает файлы, начинающиеся с . , например, .gitignore . Для отображения таких файлов нужно использовать флаг -a :

$ ls -a 

Создание файлов

Для создания файлов используются специальные программы (например, для создания текстовых файлов — текстовые редакторы).

В рамках рассмотрения Bash мы рассмотрим два текстовых редактора, которые позволят вам создавать и редактировать файлы в псевдографическом режиме.

nano

nano — простой текстовый редактор.

Для того, чтобы создать файл достаточно ввести команду nano и имя файла:

$ nano README.md 

Откроется редактор следующего вида:

Пункты меню в нижней части вызываются с помощью горячих клавиш, где символ ^ обозначает клавишу Ctrl .

То есть чтобы записать файл и выйти следует последовательно нажать Ctrl + O (запись) и Ctrl + X (выход).

Редактор nano установлен в большинстве Unix-подобных операционных системах и Git Bash.

Vim

Редактор Vim (a programmer’s text editor) — профессиональный редактор, позволяющий достичь максимальной производительности при работе с любыми текстовыми файлами. Настолько популярен, что для любой графической среды (IDE, текстовых редакторов вроде VS Code, Atom, Sublime) всегда есть плагин, включающий возможность редактирования кода в режиме “Vim Mode”.

На освоение работы в Vim нужно потратить достаточно много времени, для этого вы можете воспользоваться интерактивным учебником vimtutor :

$ vimtutor 

Мы лишь скажем, что для выхода из этого редактора (если вы всё-таки осмелились его открыть) нужно нажать клавишу Esc , затем ввести команду :q! — это позволит вам закрыть открытый файл без сохранения изменений.

VS Code

В видео-лекциях используется VS Code. В Windows вы можете правой кнопкой открыть каталог сразу в VS Code.

В Mac OS и Linux вы можете открыть терминал по адресу папки и в терминале выполнить команду code . & , которая откроет выбранный вами каталог в этом редакторе.

Если ни то, ни другое у вас не получилось, то просто откройте VS Code и через File — Open откройте нужный каталог.

Создание каталогов

mkdir — сокращения от “Make Directory”.

Позволяет создавать каталоги (создаст каталог tmp в текущем каталоге):

$ mkdir tmp 

Стоит обратить внимание на поведение при создании нового каталога в текущей директории. После команды mkdir name ваше текущее расположение в терминале не изменится. Для того, чтобы работать внутри созданного каталога, в него требуется перейти командой cd name . Это справедливо и при клонировании удалённого репозитория с помощью команды git clone . Полностью склонированный репозиторий создаст каталог в текущей директории с именем проекта, в который нужно перейти командой cd repo_name .

Перемещение файлов и каталогов

mv — сокращение от “Move”.

Перемещение (переименование) файлов и каталогов:

$ mv tmp temp 

Удаление файлов и каталогов

rm — сокращение от “Remove”.

Git: гайд для начинающих

Использование Git — необходимое условия для всех, кто работает разработчиком. Однако для начинающего специалиста это может показаться сложным. В Git много особенностей, с которыми приходится знакомиться в работе. Чтобы упростить знакомство с Git, собрали в этой статье все самые необходимые команды, которые пригодятся на первое время. В статье рассказываем, как начать работать с Git и не сойти с ума.

Содержание

Что такое система контроля версий

Система контроля версий (VCS) — ПО для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий, следить за изменениями, возвращаться к предыдущему состоянию в случае ошибки и многое другое.

Самый простой пример — Google Документы, которые позволяют посмотреть изменения в документе.

  • отслеживание истории изменений
  • откат изменений
  • совместная работа

Существует несколько видом систем контроля версий. Глобально они все подразделяются на:

  • локальные
  • централизованные
  • распределённые

ЛОКАЛЬНЫЕ VCS

RCS, SCCS

Это такое ПО, которое работает в рамках локальной машины. Такие системы хранят на диске наборы патчей (различий между файлами) в специальном формате, применяя которые она может воссоздавать состояние каждого файла в заданный момент времени.
SCCS (Source Code Control System) считается одной из первых успешных систем управления версиями. Она была разработана в 1972 году.
Эти системы до сих пор используются в некоторых операционных системах и другом ПО, но они имеют ряд значительных недостатков. С такими системами можно работать только в рамках одного файла и имеют ограниченный функционал.

ЦЕНТРАЛИЗОВАННЫЕ VCS

CVS, SourceSafe, Subversion

Такие системы, используют единственный сервер, содержащий все версии файлов, и некоторое количество клиентов, которые получают файлы из этого централизованного хранилища (репозиторий). Они были достаточно долго популярными и являлись флагманами VCS лет 15 назад. Главный недостаток — вся история хранится на центральном сервере, и в случае неполадок с ним, историю практически невозможно восстановить, она будет утеряна.

РАСПРЕДЕЛЕННЫЕ VCS

Git, Mercurial, Bazaar

В отличие от централизованных, они хранят информацию не только на центральном сервере. В таких системах клиенты не просто скачивают снимок всех файлов (состояние файлов на определенный момент времени) — они полностью копируют репозиторий. Сейчас это самые распространённые системы управлениям версиями.

ЧТО ТАКОЕ GIT

Git — система управления версиями с распределенной архитектурой.

Разработана в 2005 году Линусом Торвальдсом, более известный как автор ядра Linux.

Является абсолютным лидером по популярности среди современных VCS.

Git в двух словах

Каждое сохранённое изменение проекта — это коммит. У каждого коммита есть комментарий, то есть объяснение того, что изменилось. Из таких коммитов собирается ветка (branch). Ветка — это история изменений со своим названием. В репозитории может быть несколько веток, которые создаются из других веток или вливаются в них.

Основные термины

Репозиторий — каталог файловой системы, в котором находятся: файлы конфигурации, файлы журналов операций, выполняемых над репозиторием, индекс расположения файлов и хранилище, содержащее сами контролируемые файлы.

Локальный репозиторий — репозиторий, расположенный на локальном компьютере разработчика в каталоге. Именно в нём происходит разработка и фиксация изменений, которые отправляются на удаленный репозиторий.

Удаленный репозиторий — репозиторий, находящийся на удаленном сервере. Это общий репозиторий, в который приходят все изменения, и из которого забираются все обновления.

Коммит (Commit) — зафиксированное состояние репозитория.
У коммита есть метаданные: идентификатор, имя автора, дата создания, комментарий.

Ветка (Branch) — это отдельная история изменений (коммитов) в рамках одного репозитория. Git поощряет создание отдельных веток для каждой решаемой задачи, благодаря чему и достигается эффективная параллельная работа — каждый разработчик может работать со своей историей и не бояться, что изменения в чужом коде повлияют на его работу

Слияние (Merge) — слияние изменений из какой-либо ветки репозитория с любой веткой этого же репозитория.

Клонирование (Clone) — скачивание репозитория с удаленного сервера на локальный компьютер в определённый каталог для дальнейшей работы с этим каталогом как с репозиторием.

Пул (Pull) — получение последних изменений с удалённого сервера репозитория.

Пуш (Push) — отправка всех неотправленных коммитов на удалённый сервер репозитория.

УСТАНОВКА GIT

Чтобы приступить к работе с Git, необходимо установить его на свою машину. Это довольно просто:

  • Windows — нужно скачать .exe файл и запустить его. Для работы достаточно bash консоли.
  • Linux — обычно Git уже установлен и есть в дистрибутивах. Чтобы проверить, есть ли Git, откройте терминал и пропишите: git --version. В Ubuntu Git можно установить через терминал. Для этого введите sudo apt-get install git
  • MacOS — здесь также проверьте, установлен ли Git. Если у вас есть XCode, то Git точно есть. Если всё же нет, самый простой путь — скачать последнюю версию отсюда.

НАСТРОЙКА GIT

Теперь, когда Git установлен на вашей машине, нужно его настроить. Есть много опций, с которыми можно экспериментировать. У гита есть настройка пользователя, от которого будет идти работа. Когда создаётся коммит, гит собирает эту информацию для поля Author.

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

git config --global user.name "Ivan Ivanov"
git config --global user.email ivan.ivanov@gmail.com

СОЗДАНИЕ НОВОГО РЕПОЗИТОРИЯ

Гит хранит все файлы прямо в папке проекта. Чтобы создать новый репозиторий, нужно зайти в папку проекта и выполнить команду git init. После этого будет создана папка .git в том месте, где находится консоль.

.git — это папка, в которой содержится вся информация о репозитории. Это системная папка, которую трогать больше не надо. У каждого файла есть состояние. Состояния в гите надо понять и запомнить:

  • файл, который только что создан и не добавлен в репозиторий — untracked;
  • измененный файл в репозитории — modified;
  • из изменённых файлов выбираем только те, которые нужны нам, и они попадают в состояние staged;
  • из staged создаётся коммит и переходит в гит репозиторий. После всего этого staged состояние пустое, а modified может что-то содержать.

Чтобы узнать состояние файла используем команду git status.

Пояснение из официальной документации

ПОДГОТОВКА ФАЙЛОВ

Перед добавлением файлов в локальное хранилище их нужно подготовить. Для этого есть команда git add или git add -A. Можно добавить всё или лишь некоторые файлы.

Чтобы добавить отслеживание новых файлов, необходимо использовать команду git add. для добавления нескольких файлов по имени.

Чтобы удалить файлы, необходимо использовать команду git rm для удаления нескольких файлов по имени.

После того как все изменения внесены, можно их зафиксировать. Для этого необходимо ввести команду git commit -m “Комментарий к коммиту”.

Если вы внесли изменения, но хотите их быстро отменить, то используйте команду git reset.

Чтобы отправить локальную копию репозитория, на которой производились все действия, на сервер, есть команда git push.

РАБОТА С ВЕТКАМИ

Команда git checkout -b branch-name создаст ветку с указанным именем и автоматически переключится на неё.

После создания ветки, её можно отправить на сервер с помощью команды git push origin branch-name.

Переключиться на любую локальную ветку можно с помощью команды git checkout branch-name.

МУСОР

В репозитории после работы могут остаться различные ненужные, неотслеживаемые файлы и прочий мусор. Чтобы избавиться от этого, есть команда git clean -f -d.

ПАМЯТКА ПО КОМАНДАМ

Есть множество команд для работы с Git. Здесь будут перечислены некоторые команды, которые позволяют выполнять базовые действия с Git. На практике работа с репозиториями ведётся не через консоль, а с использованием визуальных редакторов, либо средств, которые встроены в средства для разработки ПО.

git init — создание пустого репозитория.

git clone — клонирование удаленного репозитория.

git status — просмотр текущих изменений.

git add — добавить файл в локальный репозиторий.

git commit — зафиксировать коммит в локальном репозитории.

git commit -m "Description" — описание коммита в локальном репозитории. Это очень важный момент, так как информация должна лаконично описывать внесённые изменения.

git push — отправка изменений в удаленный репозиторий.

git pull — получение изменений из удалённого репозитория.

git log — просмотр истории изменений.

НАБОР КОМАНД ДЛЯ РАБОТЫ С ВЕТКАМИ

git branch — просмотр списка веток. Текущая ветка будет отмечена (*).

git branch — создать новую ветку с именем name.

git checkout — переключиться на ветку name.

git checkout -b — создать новую ветку с именем name и переключиться на нее.

git push — отправить ветку в удаленный репозиторий.

git branch -d — удалить ветку с именем name в локальном репозитории.

git push —delete — удалить ветку с именем name в удаленном репозитории.

git merge — слияние текущей ветки с веткой name.

1.6 Введение — Первоначальная настройка Git

Теперь, когда Git установлен в вашей системе, самое время настроить среду для работы с Git под себя. Это нужно сделать только один раз — при обновлении версии Git настройки сохранятся. Но, при необходимости, вы можете поменять их в любой момент, выполнив те же команды снова.

В состав Git входит утилита git config , которая позволяет просматривать и настраивать параметры, контролирующие все аспекты работы Git, а также его внешний вид. Эти параметры могут быть сохранены в трёх местах:

  1. Файл [path]/etc/gitconfig содержит значения, общие для всех пользователей системы и для всех их репозиториев. Если при запуске git config указать параметр —system , то параметры будут читаться и сохраняться именно в этот файл. Так как этот файл является системным, то вам потребуются права суперпользователя для внесения изменений в него.
  2. Файл ~/.gitconfig или ~/.config/git/config хранит настройки конкретного пользователя. Этот файл используется при указании параметра —global и применяется ко всем репозиториям, с которыми вы работаете в текущей системе.
  3. Файл config в каталоге Git (т. е. .git/config ) репозитория, который вы используете в данный момент, хранит настройки конкретного репозитория. Вы можете заставить Git читать и писать в этот файл с помощью параметра —local , но на самом деле это значение по умолчанию. Неудивительно, что вам нужно находиться где-то в репозитории Git, чтобы эта опция работала правильно.

Настройки на каждом следующем уровне подменяют настройки из предыдущих уровней, то есть значения в .git/config перекрывают соответствующие значения в [path]/etc/gitconfig .

В системах семейства Windows Git ищет файл .gitconfig в каталоге $HOME ( C:\Users\$USER для большинства пользователей). Кроме того, Git ищет файл [path]/etc/gitconfig , но уже относительно корневого каталога MSys, который находится там, куда вы решили установить Git при запуске инсталлятора.

Если вы используете Git для Windows версии 2.х или новее, то так же обрабатывается файл конфигурации уровня системы, который имеет путь C:\Documents and Settings\All Users\Application Data\Git\config в Windows XP или C:\ProgramData\Git\config в Windows Vista и новее. Этот файл может быть изменён только командой git config -f , запущенной с правами администратора.

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

$ git config --list --show-origin

Имя пользователя

Первое, что вам следует сделать после установки Git — указать ваше имя и адрес электронной почты. Это важно, потому что каждый коммит в Git содержит эту информацию, и она включена в коммиты, передаваемые вами, и не может быть далее изменена:

$ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com

Опять же, если указана опция —global , то эти настройки достаточно сделать только один раз, поскольку в этом случае Git будет использовать эти данные для всего, что вы делаете в этой системе. Если для каких-то отдельных проектов вы хотите указать другое имя или электронную почту, можно выполнить эту же команду без параметра —global в каталоге с нужным проектом.

Многие GUI-инструменты предлагают сделать это при первом запуске.

Выбор редактора

Теперь, когда вы указали своё имя, самое время выбрать текстовый редактор, который будет использоваться, если будет нужно набрать сообщение в Git. По умолчанию Git использует стандартный редактор вашей системы, которым обычно является Vim. Если вы хотите использовать другой текстовый редактор, например, Emacs, можно проделать следующее:

$ git config --global core.editor emacs

В системе Windows следует указывать полный путь к исполняемому файлу при установке другого текстового редактора по умолчанию. Пути могут отличаться в зависимости от того, как работает инсталлятор.

В случае с Notepad++, популярным редактором, скорее всего вы захотите установить 32-битную версию, так как 64-битная версия ещё не поддерживает все плагины. Если у вас 32-битная Windows или 64-битный редактор с 64-битной системой, то выполните следующее:

$ git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Примечание

Vim, Emacs и Notepad++ — популярные текстовые редакторы, которые часто используются разработчиками как в Unix-подобных системах, таких как Linux и Mac, так и в Windows. Если вы используете другой редактор или его 32-битную версию, то обратитесь к разделу Команды git config core.editor за дополнительными инструкциями как использовать его совместно с Git.

Предупреждение

В случае, если вы не установили свой редактор и не знакомы с Vim или Emacs, вы можете попасть в затруднительное положение, когда какой-либо из них будет запущен. Например, в Windows может произойти преждевременное прерывание команды Git при попытке вызова редактора.

Настройка ветки по умолчанию

Когда вы инициализируете репозиторий командой git init , Git создаёт ветку с именем master по умолчанию. Начиная с версии 2.28, вы можете задать другое имя для создания ветки по умолчанию.

Например, чтобы установить имя main для вашей ветки по умолчанию, выполните следующую команду:

$ git config --global init.defaultBranch main

Проверка настроек

Если вы хотите проверить используемую конфигурацию, можете использовать команду git config —list , чтобы показать все настройки, которые Git найдёт:

$ git config --list user.name=John Doe user.email=johndoe@example.com color.status=auto color.branch=auto color.interactive=auto color.diff=auto . 

Некоторые ключи (названия) настроек могут отображаться несколько раз, потому что Git читает настройки из разных файлов (например, из /etc/gitconfig и ~/.gitconfig ). В таком случае Git использует последнее значение для каждого ключа.

Также вы можете проверить значение конкретного ключа, выполнив git config :

$ git config user.name John Doe

Примечание

Так как Git читает значение настроек из нескольких файлов, возможна ситуация когда Git использует не то значение что вы ожидали. В таком случае вы можете спросить Git об origin этого значения. Git выведет имя файла, из которого значение для настройки было взято последним:

$ git config --show-origin rerere.autoUpdate file:/home/johndoe/.gitconfig false

4.4 Git на сервере — Настраиваем сервер

Давайте рассмотрим настройку доступа по SSH на стороне сервера. В этом примере мы будем использовать метод authorized_keys для аутентификации пользователей. Мы подразумеваем, что вы используете стандартный дистрибутив Linux типа Ubuntu.

Примечание

Вместо ручного копирования и установки открытых ключей, многое из описанного ниже может быть автоматизировано за счёт использования команды ssh-copy-id .

Для начала создадим пользователя git и каталог .ssh для этого пользователя:

$ sudo adduser git $ su git $ cd $ mkdir .ssh && chmod 700 .ssh $ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

Затем вам нужно добавить открытые SSH-ключи разработчиков в файл authorized_keys пользователя git . Предположим, у вас уже есть несколько таких ключей и вы сохранили их во временные файлы. Напомним, открытый ключ выглядит примерно так:

$ cat /tmp/id_rsa.john.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq dAv8JggJICUvax2T9va5 gsg-keypair

Вы просто добавляете их в файл .ssh/authorized_keys в домашнем каталоге пользователя git :

$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys

Теперь вы можете создать пустой репозиторий для них, запустив git init с параметром —bare , что инициализирует репозиторий без рабочего каталога:

$ cd /srv/git $ mkdir project.git $ cd project.git $ git init --bare Initialized empty Git repository in /srv/git/project.git/

После этого Джон, Джози или Джессика могут отправить первую версию их проекта в этот репозиторий, добавив его как удалённый и отправив соответствующую ветку. Заметьте, что кто-то должен заходить на сервер и создавать голый репозиторий каждый раз, когда вы хотите добавить проект. Пусть gitserver — имя хоста сервера, на котором вы создали пользователя git и репозиторий. Если он находится в вашей внутренней сети и вы создали DNS запись для gitserver , указывающую на этот сервер, то можно использовать следующие команды как есть (считая что myproject это существующий проект с файлами):

# На компьютере Джона $ cd myproject $ git init $ git add . $ git commit -m 'Initial commit' $ git remote add origin git@gitserver:/srv/git/project.git $ git push origin master

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

$ git clone git@gitserver:/srv/git/project.git $ cd project $ vim README $ git commit -am 'Fix for README file' $ git push origin master

Этим способом вы можете быстро получить Git-сервер с доступом на чтение/запись для небольшой группы разработчиков.

Заметьте, что теперь все эти пользователи могут заходить на сервер как пользователь git . Чтобы это предотвратить, нужно изменить ему оболочку на что-то другое в файле /etc/passwd .

Вы можете легко ограничить пользователя git только действиями, связанными с Git, с помощью ограниченной оболочки git-shell , поставляемой вместе с Git. Если указать её в качестве командного интерпретатора для пользователя git , то он не сможет получить доступ к обычной командной оболочке на вашем сервере. Для её использования, укажите git-shell вместо bash или csh для пользователя git . Для этого вы должны сначала добавить git-shell в /etc/shells если её там ещё нет:

$ cat /etc/shells # посмотрим, присутствует ли `git-shell`. Если нет. $ which git-shell # проверим, что `git-shell` установлена. $ sudo -e /etc/shells # и добавим путь к `git-shell` из предыдущей команды

Теперь можно изменить оболочку для пользователя используя chsh -s :

$ sudo chsh git -s $(which git-shell)

Теперь пользователь git может использовать SSH соединение только для работы с репозиториями Git и не может зайти на машину. Если вы попробуете войти в систему, то вход будет отклонён:

$ ssh git@gitserver fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access. Connection to gitserver closed.

На текущий момент пользователи всё ещё могут использовать перенаправление порта SSH для доступа к другим Git серверам, к которым текущий может подключиться. Если это нужно отключить, вы можете добавить следующие опции в файл authorized_keys перед теми ключами, для которых нужно применить это ограничение:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty

В результате файл будет выглядеть следующим образом:

$ cat ~/.ssh/authorized_keys no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ ICUvax2T9va5 gsg-keypair no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG. 

Теперь сетевые команды Git будут работать, но пользователи не смогут заходить на сервер. Вы также можете создать подкаталог в домашнем каталоге пользователя git , чтобы немного изменить поведение git-shell . Например, вы можете ограничить команды Git, которые сервер будет принимать или сообщение, которое увидят пользователи если попробуют зайти по SSH. Для получения дополнительной информации по настройке оболочки запустите команду git help shell .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *