Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.18.1 → 2.54.0 no changes
-
2.18.0
2018-06-21
- 2.11.4 → 2.17.6 no changes
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.1.4 → 2.8.6 no changes
-
2.0.5
2014-12-17
ОБЗОР
chsh -s $(command -v git-shell) <пользователь>
git clone <пользователь>@localhost:/путь/к/repo.git
ssh <пользователь>@localhost
ОПИСАНИЕ
Это оболочка входа в систему для учётных записей SSH, чтобы обеспечить ограниченный доступ к Git. Она разрешает выполнение только серверных команд Git, реализующих функциональность pull/push, а также пользовательских команд, присутствующих в подкаталоге с именем git-shell-commands в домашнем каталоге пользователя.
КОМАНДЫ
git shell принимает следующие команды после параметра -c:
- git receive-pack <аргумент>
- git upload-pack <аргумент>
- git upload-archive <аргумент>
-
Вызывает соответствующую серверную команду для поддержки запроса клиента git push, git fetch или git archive --remote.
- cvs server
-
Имитировать сервер CVS. См. git-cvsserver[1].
Если присутствует каталог ~/git-shell-commands, git shell также будет обрабатывать другие пользовательские команды, запуская "git-shell-commands/<команда> <аргументы>" из домашнего каталога пользователя.
ИНТЕРАКТИВНОЕ ИСПОЛЬЗОВАНИЕ
По умолчанию приведённые выше команды могут выполняться только с параметром -c; оболочка не является интерактивной.
Если присутствует каталог ~/git-shell-commands, git shell также может запускаться интерактивно (без аргументов). Если в каталоге git-shell-commands присутствует команда help, она запускается, чтобы предоставить пользователю обзор разрешённых действий. Затем отображается приглашение "git> ", в котором можно ввести любую из команд из каталога git-shell-commands или exit, чтобы закрыть соединение.
Обычно этот режим используется как административный интерфейс, чтобы позволить пользователям перечислять репозитории, к которым у них есть доступ, создавать, удалять или переименовывать репозитории, а также изменять описания репозиториев и права доступа.
Если существует команда no-interactive-login, то она запускается, и интерактивная оболочка прерывается.
ПРИМЕРЫ
Чтобы отключить интерактивные входы в систему, отображая вместо этого приветствие:
$ chsh -s /usr/bin/git-shell $ mkdir $HOME/git-shell-commands $ cat >$HOME/git-shell-commands/no-interactive-login <<\EOF #!/bin/sh printf '%s\n' "Привет $USER! Вы успешно аутентифицировались, но я не" printf '%s\n' "предоставляю интерактивный доступ к оболочке." exit 128 EOF $ chmod +x $HOME/git-shell-commands/no-interactive-login
Чтобы включить доступ git-cvsserver (который обычно требует приведённого выше примера no-interactive-login в качестве предварительного условия, поскольку создание каталога git-shell-commands разрешает интерактивные входы в систему):
$ cat >$HOME/git-shell-commands/cvs <<\EOF if ! test $# = 1 && test "$1" = "server" then echo >&2 "git-cvsserver обрабатывает только \"server\"" exit 1 fi exec git cvsserver server EOF $ chmod +x $HOME/git-shell-commands/cvs
СМ. ТАКЖЕ
ssh(1), git-daemon[1], contrib/git-shell-commands/README
GIT
Является частью пакета git[1]