Git
Português (Brasil) ▾ Topics ▾ Latest version ▾ git-shell last updated in 2.18.0

NOME

git-shell - Shell de login restrito para acesso SSH, apenas para o Git

RESUMO

chsh -s $(command -v git-shell) <usuário>
git clone <usuário>@localhost:/path/to/repo.git
ssh <usuário>@localhost

DESCRIÇÃO

Esse é um shell de login para contas SSH para fornecer acesso restrito ao Git. Ele permite a execução apenas de comandos Git do lado do servidor que implementam a funcionalidade pull/push, além de comandos personalizados presentes num subdiretório chamado git-shell-commands no diretório inicial do usuário.

COMANDOS

git shell aceita os seguintes comandos após a opção -c:

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

Chame o comando correspondente do lado do servidor para apoiar a solicitação do comando git push, git fetch ou git archive --remote do cliente.

cvs server

Imita um servidor CVS. Consulte git-cvsserver[1].

If a ~/git-shell-commands directory is present, git shell will also handle other, custom commands by running "git-shell-commands/<command> <arguments>" from the user’s home directory.

USO INTERATIVO

É predefinido que os comandos acima possam ser executados apenas com a opção -c; o shell não é interativo.

Se um diretório ~/git-shell-commands estiver presente, o comando git shell também poderá ser executado interativamente (sem argumentos). Se um comando help estiver presente no diretório git-shell-commands, ele será executado para fornecer ao usuário uma visão geral das ações permitidas. Em seguida, é apresentado um prompt "git> " onde é possível digitar qualquer um dos comandos do diretório git-shell-commands ou exit para encerrar a conexão.

Em geral, este modo é utilizado como uma interface administrativa para permitir que os usuários listem os repositórios dos quais eles têm acesso para, criar, excluir ou renomear os repositórios ou alterar as descrições e permissões do mesmo.

Caso um comando no-interactive-login existir, ele será executado e o shell interativo será abortado.

EXEMPLOS

Para desativar os logins interativos, exibindo uma saudação:

$ 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' "Olá $USER! Você se autenticou com sucesso, porém eu não"
printf '%s\n' "forneço um acesso interativo ao shell."
exit 128
EOF
$ chmod +x $HOME/git-shell-commands/no-interactive-login

Para ativar o acesso ao git-cvsserver (que geralmente deve ter o exemplo no-interactive-login acima como pré-requisito, pois a criação do diretório git-shell-commands permite logins interativos):

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

VEJA TAMBÉM

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

GIT

Parte do conjunto git[1]

scroll-to-top