?
This document uses PHP Chinese website manual Release
git-shell - 僅限 Git-SSH 訪問的受限登錄 shell
chsh -s $(command -v git-shell) <user>git clone <user>@localhost:/path/to/repo.git ssh <user>@localhost
這是 SSH 帳戶的登錄外殼,用于提供受限制的 Git 訪問。它只允許執(zhí)行實(shí)現(xiàn)拉/推功能的服務(wù)器端 Git 命令,以及git-shell-commands
在用戶主目錄中命名的子目錄中存在的自定義命令。
git shell
在-c
選項(xiàng)后接受以下命令:
git receive-pack <argument> git upload-pack <argument> git upload-archive <argument>
調(diào)用相應(yīng)的服務(wù)器端命令,以支持客戶端的git push
,git fetch
或git archive --remote
請求。
cvs server
模仿 CVS 服務(wù)器。參見 git-cvsserver [1]。
如果存在~/git-shell-commands
目錄,則git shell
還將通過在用戶的主目錄中運(yùn)行“ git-shell-commands/<command> <arguments>
”來處理其他自定義命令。
默認(rèn)情況下,上述命令只能使用該-c
選項(xiàng)執(zhí)行; 該 shell 不是交互式的。
如果~/git-shell-commands
目錄存在,git shell
也可以交互式運(yùn)行(不帶參數(shù))。如果目錄中help
存在命令git-shell-commands
,則會向用戶提供允許的操作概述。然后出現(xiàn)一個(gè)“git>”提示符,用戶可以輸入git-shell-commands
目錄中的任何命令或exit
關(guān)閉連接。
通常,此模式用作管理界面,以允許用戶列出他們有權(quán)訪問的存儲庫,創(chuàng)建,刪除或重命名存儲庫,或更改存儲庫描述和權(quán)限。
如果no-interactive-login
命令存在,則運(yùn)行它并交互式 shell 被中止。
To disable interactive logins, displaying a greeting instead:
$ 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 128EOF $ chmod +x $HOME/git-shell-commands/no-interactive-login
要啟用 git-cvsserver 訪問權(quán)限(通常應(yīng)該有上述no-interactive-login
示例作為先決條件,因?yàn)閯?chuàng)建 git-shell-commands 目錄允許交互式登錄):
$ cat >$HOME/git-shell-commands/cvs <<\EOFif ! test $# = 1 && test "$1" = "server"then echo >&2 "git-cvsserver only handles \"server\"" exit 1fi exec git cvsserver server EOF $ chmod +x $HOME/git-shell-commands/cvs