українська мова ▾ Topics ▾ Latest version ▾ git-shell last updated in 2.18.0

НАЗВА

git-shell - Обмежена оболонка входу для доступу SSH лише з Git

СИНОПСИС

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]