"Fossies" - the Fresh Open Source Software Archive

Member "git-2.23.0.windows.1/Documentation/git-shell.txt" (16 Aug 2019, 2981 Bytes) of package /windows/misc/git-2.23.0.windows.1.zip:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 git-shell(1)
    2 ============
    3 
    4 NAME
    5 ----
    6 git-shell - Restricted login shell for Git-only SSH access
    7 
    8 
    9 SYNOPSIS
   10 --------
   11 [verse]
   12 'chsh' -s $(command -v git-shell) <user>
   13 'git clone' <user>`@localhost:/path/to/repo.git`
   14 'ssh' <user>`@localhost`
   15 
   16 DESCRIPTION
   17 -----------
   18 
   19 This is a login shell for SSH accounts to provide restricted Git access.
   20 It permits execution only of server-side Git commands implementing the
   21 pull/push functionality, plus custom commands present in a subdirectory
   22 named `git-shell-commands` in the user's home directory.
   23 
   24 COMMANDS
   25 --------
   26 
   27 'git shell' accepts the following commands after the `-c` option:
   28 
   29 'git receive-pack <argument>'::
   30 'git upload-pack <argument>'::
   31 'git upload-archive <argument>'::
   32 	Call the corresponding server-side command to support
   33 	the client's 'git push', 'git fetch', or 'git archive --remote'
   34 	request.
   35 'cvs server'::
   36 	Imitate a CVS server.  See linkgit:git-cvsserver[1].
   37 
   38 If a `~/git-shell-commands` directory is present, 'git shell' will
   39 also handle other, custom commands by running
   40 "`git-shell-commands/<command> <arguments>`" from the user's home
   41 directory.
   42 
   43 INTERACTIVE USE
   44 ---------------
   45 
   46 By default, the commands above can be executed only with the `-c`
   47 option; the shell is not interactive.
   48 
   49 If a `~/git-shell-commands` directory is present, 'git shell'
   50 can also be run interactively (with no arguments).  If a `help`
   51 command is present in the `git-shell-commands` directory, it is
   52 run to provide the user with an overview of allowed actions.  Then a
   53 "git> " prompt is presented at which one can enter any of the
   54 commands from the `git-shell-commands` directory, or `exit` to close
   55 the connection.
   56 
   57 Generally this mode is used as an administrative interface to allow
   58 users to list repositories they have access to, create, delete, or
   59 rename repositories, or change repository descriptions and
   60 permissions.
   61 
   62 If a `no-interactive-login` command exists, then it is run and the
   63 interactive shell is aborted.
   64 
   65 EXAMPLES
   66 --------
   67 
   68 To disable interactive logins, displaying a greeting instead:
   69 
   70 ----------------
   71 $ chsh -s /usr/bin/git-shell
   72 $ mkdir $HOME/git-shell-commands
   73 $ cat >$HOME/git-shell-commands/no-interactive-login <<\EOF
   74 #!/bin/sh
   75 printf '%s\n' "Hi $USER! You've successfully authenticated, but I do not"
   76 printf '%s\n' "provide interactive shell access."
   77 exit 128
   78 EOF
   79 $ chmod +x $HOME/git-shell-commands/no-interactive-login
   80 ----------------
   81 
   82 To enable git-cvsserver access (which should generally have the
   83 `no-interactive-login` example above as a prerequisite, as creating
   84 the git-shell-commands directory allows interactive logins):
   85 
   86 ----------------
   87 $ cat >$HOME/git-shell-commands/cvs <<\EOF
   88 if ! test $# = 1 && test "$1" = "server"
   89 then
   90 	echo >&2 "git-cvsserver only handles \"server\""
   91 	exit 1
   92 fi
   93 exec git cvsserver server
   94 EOF
   95 $ chmod +x $HOME/git-shell-commands/cvs
   96 ----------------
   97 
   98 SEE ALSO
   99 --------
  100 ssh(1),
  101 linkgit:git-daemon[1],
  102 contrib/git-shell-commands/README
  103 
  104 GIT
  105 ---
  106 Part of the linkgit:git[1] suite