Provided by: restricted-ssh-commands_0.4-1_all bug

NAME

       restricted-ssh-commands - Restrict SSH users to a predefined set of commands

SYNOPSIS

       /usr/lib/restricted-ssh-commands [config]

DESCRIPTION

       restricted-ssh-commands is intended to be called by SSH to restrict a user to only run specific commands.
       A list of allowed regular expressions can be configured in /etc/restricted-ssh-commands/. The requested
       command has to match at least one regular expression.  Otherwise it will be rejected.

       restricted-ssh-commands is useful to grant restricted access via SSH to do only certain task. For
       example, it could allow a user to upload a Debian packages via scp and run reprepro processincoming.

       The optional config parameter is the name of the configuration inside /etc/restricted-ssh-commands/ that
       should be used. If config is omitted, the user name will be used.

USAGE

       Create a configuration file in /etc/restricted-ssh-commands/$config and add following line to
       ~/.ssh/authorized_keys to use it

           command="/usr/lib/restricted-ssh-commands",no-port-forwarding,\
           no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa [...]

       To enable debug output, set the RSC_VERBOSE environment variable to a nonzero value, e.g. by adding it to
       authorized_keys:

           command="RSC_VERBOSE=1 /usr/lib/restricted-ssh-commands"

EXIT STATUS

       restricted-ssh-commands will exit with the exit status from the called command if the command is allowed
       and therefore executed. If the command is rejected, restricted-ssh-commands will exit with one of the
       following exit codes.

       124     A configuration file was found and contains at least one regular expression, but the requested
               command does not match any of those regular expressions.

       125     The configuration file is missing or does not contain any regular expressions.  Thus all commands
               are rejected.

EXAMPLES

       Imagine you have a Debian package repository on a host using reprepro and you want to allow package
       upload to it. Assuming the user is reprepro and the package configuration is stored in /srv/reprepro, you
       would create the configuration file /etc/restricted-ssh-commands/reprepro containing these three regular
       expressions:

           ^scp -p( -d)? -t( --)? /srv/reprepro/incoming(/[-a-z0-9+~_.]*[-a-z0-9+~_])?$
           ^chmod 0644( /srv/reprepro/incoming/[-a-z0-9+~_.]*[-a-z0-9+~_])+$
           ^reprepro ( -V)? -b /srv/reprepro processincoming foobar$

SECURITY NOTES

       It is dangerous and not recommended to use negative bracket expressions (like [^ /]). Characters like CR
       LF $ & ; ( ) and so on can be abused to execute arbitrary commands. For example, the rule

           ^echo [^ /]$

       can be abused to execute these commands

           echo foo&echo owned
           echo foo&rm -rf $(printf "\x2f")

       where a TAB is used instead of spaces after the first ampersand. Therefore only use positive bracked
       expressions (like [a-z]).

FILES

       The configuration files are placed in /etc/restricted-ssh-commands/. Each line in the configuration file
       represents one POSIX extended regular expression (ERE). Lines starting with # are considered as comments
       and are ignored. Empty lines (containing only whitespaces) are ignored, too.

SEE ALSO

       Regular expressions on http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_01.html

       Section 9.4 Extended Regular Expressions (ERE) on
       http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html

AUTHOR

       restricted-ssh-commands and this manpage have been written by Benjamin Drung
       <benjamin.drung@profitbricks.com>.