Git shell 未启用?

Git shell 未启用?

我正在尝试安装 git 服务器。当我将 git 用户的默认 shell 设置为 /usr/bin/git-shell 时,以 git 身份登录时出现错误。

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

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

谷歌搜索没有显示有关此错误的任何内容。

我以前安装时也用过这种方法,没有出现这样的错误。我还查看了工作服务器是否有一些额外的文件或配置,但没有出现这样的情况。

系统规格:

  • Gentoo Linux(最新)
  • Git 1.7.5.3

/etc/passwd 行:

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

答案1

我跑完之后发现了这个locate git-shell-commands

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

可通过 git-shell 调用的示例程序。将名为“git-shell-commands”的目录放在 shell 为 git-shell 的用户的主目录中。然后以该用户身份登录的任何人都可以运行“git-shell-commands”目录中的可执行文件。

提供的命令:

help:打印出可用命令的名称。当以交互方式运行时,git-shell 将在启动时自动运行“help”(如果存在)。

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

因此我以 root 身份运行以下命令:

cp /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands /home/git -R
chown git:developers /home/git/git-shell-commands/ -R
chmod +x /home/git/git-shell-commands/help
chmod +x /home/git/git-shell-commands/list
exit

然后我可以以用户身份运行以下命令git

[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

现在我看不出有什么好的帮助和列表,但是登录有效。:)

答案2

我只是不得不做# mkdir ~git/git-shell-commands然后su git工作git 1.8.1.5-r1

答案3

如果你看看代码这会触发该错误消息(似乎有所不同在旧版本的 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 目录上的正确问题。

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

答案4

应用这两个命令将解决此问题:

为 your_git_user 启用 git-shell:

usermod -s /usr/bin/git-shell 你的 git 用户

要递归地更改 your_git_user 目录的所有者:

chown -R 你的 git 用户:你的用户组 /home/你的 git 用户

您可以使用以下命令添加 git shell 命令:

cp /usr/share/doc/git-1.8.3.1/contrib/git-shell-commands/ /home/你的git用户/git-shell-commands -R

相关内容