我正在尝试安装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,但没有这样的事情。
系统规格:
/ 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 git
为git 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目录上的一个正确的问题。
用户必须具有对目录的读取和执行权限才能执行其中的程序。