Squashed 'third_party/git/' content from commit cb71568594
git-subtree-dir: third_party/git git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7
This commit is contained in:
commit
1b593e1ea4
3629 changed files with 1139935 additions and 0 deletions
106
Documentation/git-shell.txt
Normal file
106
Documentation/git-shell.txt
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
git-shell(1)
|
||||
============
|
||||
|
||||
NAME
|
||||
----
|
||||
git-shell - Restricted login shell for Git-only SSH access
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'chsh' -s $(command -v git-shell) <user>
|
||||
'git clone' <user>`@localhost:/path/to/repo.git`
|
||||
'ssh' <user>`@localhost`
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
This is a login shell for SSH accounts to provide restricted Git access.
|
||||
It permits execution only of server-side Git commands implementing the
|
||||
pull/push functionality, plus custom commands present in a subdirectory
|
||||
named `git-shell-commands` in the user's home directory.
|
||||
|
||||
COMMANDS
|
||||
--------
|
||||
|
||||
'git shell' accepts the following commands after the `-c` option:
|
||||
|
||||
'git receive-pack <argument>'::
|
||||
'git upload-pack <argument>'::
|
||||
'git upload-archive <argument>'::
|
||||
Call the corresponding server-side command to support
|
||||
the client's 'git push', 'git fetch', or 'git archive --remote'
|
||||
request.
|
||||
'cvs server'::
|
||||
Imitate a CVS server. See linkgit:git-cvsserver[1].
|
||||
|
||||
If a `~/git-shell-commands` directory is present, 'git shell' will
|
||||
also handle other, custom commands by running
|
||||
"`git-shell-commands/<command> <arguments>`" from the user's home
|
||||
directory.
|
||||
|
||||
INTERACTIVE USE
|
||||
---------------
|
||||
|
||||
By default, the commands above can be executed only with the `-c`
|
||||
option; the shell is not interactive.
|
||||
|
||||
If a `~/git-shell-commands` directory is present, 'git shell'
|
||||
can also be run interactively (with no arguments). If a `help`
|
||||
command is present in the `git-shell-commands` directory, it is
|
||||
run to provide the user with an overview of allowed actions. Then a
|
||||
"git> " prompt is presented at which one can enter any of the
|
||||
commands from the `git-shell-commands` directory, or `exit` to close
|
||||
the connection.
|
||||
|
||||
Generally this mode is used as an administrative interface to allow
|
||||
users to list repositories they have access to, create, delete, or
|
||||
rename repositories, or change repository descriptions and
|
||||
permissions.
|
||||
|
||||
If a `no-interactive-login` command exists, then it is run and the
|
||||
interactive shell is aborted.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
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 128
|
||||
EOF
|
||||
$ chmod +x $HOME/git-shell-commands/no-interactive-login
|
||||
----------------
|
||||
|
||||
To enable git-cvsserver access (which should generally have the
|
||||
`no-interactive-login` example above as a prerequisite, as creating
|
||||
the git-shell-commands directory allows interactive logins):
|
||||
|
||||
----------------
|
||||
$ 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),
|
||||
linkgit:git-daemon[1],
|
||||
contrib/git-shell-commands/README
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
||||
Loading…
Add table
Add a link
Reference in a new issue