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
RESUMO
chsh -s $(command -v git-shell) <usuário> git clone <usuário>@localhost:/path/to/repo.git
ssh <usuário>@localhost
DESCRIÇÃO
Este é um shell de login para contas SSH para fornecer acesso restrito ao
Git. Ele permite a execução apenas dos comandos Git do lado do servidor,
implementando a funcionalidade pull/push, além dos comandos personalizados
presentes em um subdiretório chamado git shell command
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
-
Imite um servidor CVS. Consulte git-cvsserver[1].
Caso um diretório ~/git-shell-command
estiver presente, o comando git
shell também manipulará outros comandos personalizados executando
"git-shell-commands/<comando> <argumentos>
" no diretório inicial do
usuário.
USO INTERATIVO
É predefinido que os comandos acima possam ser executados apenas com a opção
-c
; o shell não é interativo.
Caso um diretório ~/git-shell-command
estiver presente, o comando git
shell também poderá ser executado interativamente (sem argumentos). Caso
um comando help
estiver presente no diretório git-shell-command
, ele
será executado para fornecer ao usuário uma visão geral das ações que são
permitidas. Em seguida, é apresentado um prompt "git>", onde é possível
digitar qualquer um dos comandos do diretório git-shell-command
, 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 habilitar o acesso ao git cvsserver (que geralmente deve ter o
exemplo no-interactive-login
acima) como um pré-requisito, como criando o
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]