Svenska ▾ Topics ▾ Latest version ▾ git-shell last updated in 2.18.0

NAMN

git-shell - Restricted login shell for Git-only SSH access

SYNOPSIS

chsh -s $(command -v git-shell) <användare>
git clone <användare>@localhost:/path/to/repo.git
ssh <användare>@localhost

BESKRIVNING

Detta är ett inloggningsshell för SSH-konton för att ge begränsad Git-åtkomst. Det tillåter endast exekvering av serversida-Git-kommandon som implementerar hämta/sänd(pull/push)-funktionen, plus anpassade kommandon som finns i en underkatalog med namnet git-shell-commands i användarens hemkatalog.

KOMMANDON

git shell accepterar följande kommandon efter -c-alternativet:

git receive-pack <argument>
git upload-pack <argument>
git upload-archive <argument>

Anropa motsvarande serversida-kommando för att stödja klientens begäran git push, git fetch eller git archive --remote.

cvs server

Imitera en CVS-server. Se git-cvsserver[1].

Om en ~/git-shell-commands-katalog finns, kommer git shell även att hantera andra, anpassade kommandon genom att köra "git-shell-commands/<kommando> <arguments>" från användarens hemkatalog.

INTERAKTIV ANVÄNDNING

Som standard, kan kommandona ovan endast köras med alternativet -c; skalet är inte interaktivt.

Om en ~/git-shell-commands-katalog finns, kan git shell också köras interaktivt (utan argument). Om ett help-kommando finns i git-shell-commands-katalogen körs det för att ge användaren en översikt över tillåtna åtgärder. Sedan visas en "git>"-prompt där man kan ange vilket som helst av kommandona från git-shell-commands-katalogen, eller exit för att stänga anslutningen.

Generellt sett används det här läget som ett administrativt gränssnitt för att låta användare lista repon de har åtkomst till, skapa, ta bort eller byta namn på förvar, eller ändra förvars-beskrivningar och behörigheter.

Om ett no-interactive-login-kommando finns, körs det och det interaktiva skalet avbryts.

EXEMPEL

För att inaktivera interaktiva inloggningar, visa en hälsning istället:

$ 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' "Hej $USER! Du har autentiserat dig, men jag gör det inte."
printf '%s\n' "ge interaktiv skalåtkomst."
exit 128
EOF
$ chmod +x $HOME/git-shell-commands/no-interactive-login

För att aktivera åtkomst till git-cvsserver (vilket generellt sett bör ha exemplet no-interactive-login ovan som en förutsättning, eftersom skapandet av katalogen git-shell-commands tillåter interaktiva inloggningar):

$ cat >$HOME/git-shell-commands/cvs <<\EOF
if ! test $# = 1 && test "$1" = "server"
then
	echo >&2 "git-cvsserver bara hantera \"server\""
	exit 1
fi
exec git cvsserver server
EOF
$ chmod +x $HOME/git-shell-commands/cvs

SE ÄVEN

ssh(1), git-daemon[1], contrib/git-shell-commands/README

GIT

En del av git[1]-sviten