Git
日本語 ▾ トピック ▾ 最新バージョン ▾ git-shell は 2.18.0 で最後に更新されました

NAME

git-shell - GitのみのSSHアクセス用の制限付きログインシェル

SYNOPSIS

chsh -s $(command -v git-shell) <user>
git clone <user>@localhost:/path/to/repo.git
ssh <user>@localhost

DESCRIPTION

これは、制限されたGitアクセスを提供するためのSSHアカウント用のログインシェルです。プル/プッシュ機能を実装するサーバー側のGitコマンドの実行と、ユーザーのホームディレクトリにある git-shell-commands という名前のサブディレクトリにあるカスタムコマンドの実行のみを許可します。

COMMANDS

git shell は、 -c オプションの後に次のコマンドを受け入れます。

git receive-pack <argument>
git upload-pack <argument>
git upload-archive <argument>

クライアントの git pushgit fetch、または git archive --remote リクエストをサポートするために、対応するサーバー側のコマンドを呼び出します。

cvs server

CVSサーバーを模倣します。git-cvsserver[1]を参照してください。

~/git-shell-commands ディレクトリが存在する場合、git shell は、ユーザーのホームディレクトリから "git-shell-commands/<command> <arguments>" を実行することにより、他のカスタムコマンドも処理します。

INTERACTIVE USE

デフォルトでは、上記のコマンドは -c オプションでのみ実行できます。シェルはインタラクティブではありません。

~/git-shell-commands ディレクトリが存在する場合、git shell はインタラクティブに (引数なしで) 実行することもできます。git-shell-commands ディレクトリに help コマンドが存在する場合、ユーザーに許可されたアクションの概要を提供するために実行されます。次に、"git> " プロンプトが表示され、git-shell-commands ディレクトリからのコマンドを入力するか、接続を閉じるために exit を入力できます。

一般的に、このモードは、ユーザーがアクセスできるリポジトリを一覧表示したり、リポジトリを作成、削除、または名前変更したり、リポジトリの説明と権限を変更したりできるようにするための管理インターフェースとして使用されます。

no-interactive-login コマンドが存在する場合、それが実行され、インタラクティブシェルは中止されます。

EXAMPLES

インタラクティブログインを無効にし、代わりに挨拶を表示する場合

$ chsh -s /usr/bin/git-shell
$ mkdir $HOME/git-shell-commands
$ cat >$HOME/git-shell-commands/no-interactive-login <<\EOF
#!/bin/sh
printf '%s\n' "Hi $USER! You've successfully authenticated, but I do not"
printf '%s\n' "provide interactive shell access."
exit 128
EOF
$ chmod +x $HOME/git-shell-commands/no-interactive-login

git-cvsserver アクセスを有効にする場合 (一般的に、git-shell-commands ディレクトリを作成するとインタラクティブログインが可能になるため、上記の no-interactive-login の例を前提とする必要があります)

$ cat >$HOME/git-shell-commands/cvs <<\EOF
if ! test $# = 1 && test "$1" = "server"
then
	echo >&2 "git-cvsserver only handles \"server\""
	exit 1
fi
exec git cvsserver server
EOF
$ chmod +x $HOME/git-shell-commands/cvs

SEE ALSO

ssh(1)、git-daemon[1]、contrib/git-shell-commands/README

GIT

git[1] スイートの一部

scroll-to-top