Gitshell没有启用?

我正在尝试安装git服务器。 当我将我的git用户的默认shell设置为/ usr / bin / git-shell时,我在login时得到一个错误git。

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

基于ssh密钥的访问工作,权限设置正确。

Googlesearch没有显示任何有关此错误的信息。

我也在过去的安装中使用这种方法,并没有显示这样的错误。 另外我看着工作服务器,如果它有一些额外的文件或configuration,但没有这样的事情。

系统规格:

  • Gentoo Linux(最新)
  • Git 1.7.5.3

/ etc / passwd行:

 git:x:1002:1004::/home/git:/usr/bin/git-shell 

findgit-shell-commands后,我发现了这个

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

示例程序可以通过git-shell进行调用。 将一个名为'git-shell-commands'的目录放在一个用户的主目录下,这个用户的shell是git-shell。 然后,以该用户身份login的任何人都将能够在“git-shell-commands”目录中运行可执行文件。

提供的命令:

帮助:打印可用命令的名称。 当以交互方式运行时,git-shell会在启动时自动运行'help',前提是它存在。

list:在用户的主目录下显示任何名字以“.git”结尾的裸存储库。 没有其他的git仓库是可见的,尽pipe它们可能通过git-shell来克隆。 'list'旨在最大限度地减less查找可用存储库时必须调用git的次数; 如果您的设置有额外的应该是用户可发现的存储库,您可能希望相应地修改“列表”。

所以我

 [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 

现在我没有看到有什么好的帮助和清单,但login工作。 🙂

我只需要做# mkdir ~git/git-shell-commands git 1.8.1.5-r1 # mkdir ~git/git-shell-commands然后su gitgit 1.8.1.5-r1

如果你看看那个触发错误信息的代码 (这在旧版本的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."); 

这应该是在git-shell目录上的一个正确的问题。

用户必须具有对目录的读取和执行权限才能执行其中的程序。