O shell do Git não está ativado?

22

Estou tentando instalar o git server. Quando eu configuro o shell padrão para o meu usuário git para / usr / bin / git-shell, recebo um erro no login como git.

fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.

Trabalho de acesso baseado em chave Ssh, as permissões estão definidas corretamente.

A pesquisa do Google não mostra nada sobre esse erro.

Eu também usei este método em instalações anteriores e nenhum erro foi exibido. Também eu olhei para o servidor de trabalho, se tem alguns arquivos extras ou config, mas não existe tal coisa.

Especificação do sistema:

  • Gentoo linux (mais recente)
  • Git 1.7.5.3
Linha

/ etc / passwd:

git:x:1002:1004::/home/git:/usr/bin/git-shell
    
por Peter 29.06.2011 / 16:43

3 respostas

16

Eu encontrei isto depois de fazer o locate git-shell-commands

cat /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README

Sample programs callable through git-shell. Place a directory named 'git-shell-commands' in the home directory of a user whose shell is git-shell. Then anyone logging in as that user will be able to run executables in the 'git-shell-commands' directory.

Provided commands:

help: Prints out the names of available commands. When run interactively, git-shell will automatically run 'help' on startup, provided it exists.

list: Displays any bare repository whose name ends with ".git" under user's home directory. No other git repositories are visible, although they might be clonable through git-shell. 'list' is designed to minimize the number of calls to git that must be made in finding available repositories; if your setup has additional repositories that should be user-discoverable, you may wish to modify 'list' accordingly.

Então eu

[root@svn ~]# cp /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands /home/git -R
[root@svn ~]# chown git:developers /home/git/git-shell-commands/ -R
[root@svn ~]# chmod +x /home/git/git-shell-commands/help
[root@svn ~]# chmod +x /home/git/git-shell-commands/list
[root@svn ~]# exit
[me@svn ~]$ su git
Password: 
Run 'help' for help, or 'exit' to leave.  Available commands:
list
git> help
Run 'help' for help, or 'exit' to leave.  Available commands:
list
git> list
git> exit

Agora eu não vejo que boa ajuda e lista são, mas o login funcionou. :)

    
por 27.10.2011 / 22:22
5

eu só tive que fazer # mkdir ~git/git-shell-commands , então su git funcionou para git 1.8.1.5-r1

    
por 31.10.2013 / 23:48
3

Se você veja o código que aciona essa mensagem de erro (que parece ter sido diferente em versões mais antigas do Git):

if (access(COMMAND_DIR, R_OK | X_OK) == -1) {
  die("Interactive git shell is not enabled.\n"
     "hint: ~/" COMMAND_DIR " should exist "
     "and have read and execute access."); 

este deve ser um problema certo no diretório git-shell.

The user must have read and execute permissions to the directory in order to execute the programs in it.

    
por 01.07.2011 / 14:15