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.51.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) <user> git clone <user>@localhost:/path/to/repo.git
ssh <user>@localhost
ОПИС
Це оболонка входу для облікових записів SSH, що забезпечує обмежений доступ до Git. Вона дозволяє виконання лише серверних команд Git, що реалізують функціональність pull/push, а також користувацьких команд, що знаходяться в підкаталозі з назвою git-shell-commands
в домашньому каталозі користувача.
КОМАНДИ
git shell приймає такі команди після опції -c
:
- git receive-pack <argument>
- git upload-pack <argument>
- git upload-archive <argument>
-
Викличте відповідну команду на стороні сервера для підтримки запитів клієнта «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 також можна запускати інтерактивно (без аргументів). Якщо команда help
присутня в каталозі git-shell-commands
, вона виконується, щоб надати користувачеві огляд дозволених дій. Потім відображається запит "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' "Hi $USER! You've successfully authenticated, but I do not" printf '%s\n' "provide interactive shell access." 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 only handles \"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]