我跑步后发现了这个 locate git-shell-commands
猫/usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README
可通过git-shell调用的示例程序。在名为git-shell的用户的主目录中放置一个名为“ git-shell-commands”的目录。然后,以该用户身份登录的任何人都将能够在'git-shell-commands'目录中运行可执行文件。
提供的命令:
帮助:打印出可用命令的名称。交互式运行时,git-shell将在启动时自动运行“帮助”(如果存在)。
list:显示用户主目录下名称以“ .git”结尾的任何裸仓库。尽管可以通过git-shell克隆其他git存储库,但看不到其他git存储库。“列表”旨在最大程度地减少寻找可用存储库时必须进行的git调用次数;如果您的设置中包含其他应由用户发现的存储库,则您可能希望相应地修改“列表”。
所以我以超级用户身份运行以下命令:
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
现在,我看不到什么好的帮助和列表,但是登录有效。:)
git-shell
被用于推/拉功能受限壳仅(即git push
,git fetch
和git pull
)。它并不意味着是交互式的,因此您不应登录交互式shell。您可以通过git-shell-commands
在用户的家中添加目录并将其中的一些二进制文件符号链接来使其具有某种程度的交互性。但这是非常有限的(cd
例如,没有二进制),因此更好的替代方法是以root
具有sudo
能力的用户身份登录,或者在用户下sudo -u git -s
获得完整的bash
shellgit
。