走った後にこれを見つけた locate git-shell-commands
cat /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README
git-shellを介して呼び出し可能なサンプルプログラム。シェルがgit-shellであるユーザーのホームディレクトリに「git-shell-commands」という名前のディレクトリを配置します。そうすれば、そのユーザーとしてログインする誰でも、「git-shell-commands」ディレクトリで実行可能ファイルを実行できます。
提供されるコマンド:
help:使用可能なコマンドの名前を出力します。インタラクティブに実行すると、git-shellは起動時に自動的に「ヘルプ」を実行します(存在する場合)。
list:ユーザーのホームディレクトリの下に名前が「.git」で終わるベアリポジトリを表示します。他のgitリポジトリは表示されませんが、git-shellを介してクローン化できます。「リスト」は、利用可能なリポジトリを見つける際に行わなければならない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
)。対話型ではないため、対話型シェルでログインしないでください。git-shell-commands
ユーザーのホームにディレクトリを追加し、内部のいくつかのバイナリをシンボリックリンクすることにより、多少インタラクティブにすることができます。しかし、それは非常に限られているので(cd
たとえば、バイナリはありません)、より良い代替手段は、ログインできるユーザーroot
またはsudo
有能なユーザーで、ユーザーの下でsudo -u git -s
完全なbash
シェルを取得するgit
ことです。