restricted shell

{{how-to|date=October 2017}}

The restricted shell is a Unix shell that restricts some of the capabilities available to an interactive user session, or to a shell script, running within it. It is intended to provide an additional layer of security, but is insufficient to allow execution of entirely untrusted software. A restricted mode operation is found in the original Bourne shell{{Cite web |url=http://pwet.fr/man/linux/commandes/posix/sh |title=POSIX sh specification |access-date=2010-10-04 |archive-date=2014-12-21 |archive-url=https://web.archive.org/web/20141221210713/http://pwet.fr/man/linux/commandes/posix/sh |url-status=dead }} and its later counterpart Bash,[https://www.gnu.org/software/bash/manual/bashref.html#The-Restricted-Shell GNU Bash manual] and in the KornShell.[http://docs.sun.com/app/docs/doc/816-5165/ksh-1?l=en&n=1&a=view ksh manual], Solaris (SunOS 5.10) manual page, Oracle Inc. In some cases a restricted shell is used in conjunction with a chroot jail, in a further attempt to limit access to the system as a whole.

Invocation

The restricted mode of the Bourne shell {{mono|sh}}, and its POSIX workalikes, is used when the interpreter is invoked in one of the following ways:

  • {{kbd|sh -r}}    note that this conflicts with the "read" option in some {{mono|sh}} variants
  • {{kbd|rsh}}    note that this may conflict with the remote shell command, which is also called {{mono|rsh}} on some systems

The restricted mode of Bash is used when Bash is invoked in one of the following ways:

  • {{kbd|rbash}}
  • {{kbd|bash -r}}
  • {{kbd|bash --restricted}}

Similarly KornShell's restricted mode is produced by invoking it thus:

  • {{kbd|rksh}}
  • {{kbd|ksh -r}}

=Setting up rbash=

For some systems (e.g., CentOS), the invocation through {{mono|rbash}} is not enabled by default, and the user obtains a {{samp|command not found|color=red}} error if invoked directly, or a login failure if the /etc/passwd file indicates {{mono|/bin/rbash}} as the user's shell.

It suffices to create a link named {{mono|rbash}} pointing directly to {{mono|bash}}. Though this invokes Bash directly, without the {{kbd|-r}} or {{kbd|--restricted}} options, Bash does recognize that it was invoked through {{mono|rbash}} and it does come up as a restricted shell.

This can be accomplished with the following simple commands (executed as root, either logged in as user root, or using sudo):

root@host:~# cd /bin

root@host:/bin# ln bash rbash

Limited operations

The following operations are not permitted in a restricted shell:

  • changing directory
  • specifying absolute pathnames or names containing a slash
  • setting the PATH or SHELL variable
  • redirection of output

Bash adds further restrictions, including:

  • limitations on function definitions
  • limitations on the use of slash-ed filenames in Bash builtins

Restrictions in the restricted KornShell are much the same as those in the restricted Bourne shell.[http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.baseadmn/doc/baseadmndita/korn_shell_restricted.htm ksh(1) manual page], IBM AIX documentation set

Weaknesses of a restricted shell

The restricted shell is not secure. A user can break out of the restricted environment by running a program that features a shell function. The following is an example of the shell function in vi being used to escape from the restricted shell:

user@host:~$ vi

:set shell=/bin/sh

:shell

Or by simply starting a new unrestricted shell, if it is in the {{mono|PATH}}, as demonstrated here:

user@host:~$ rbash

user@host:~$ cd /

rbash: cd: restricted

user@host:~$ bash

user@host:~$ cd /

user@host:/$

List of programs

Beyond the restricted modes of usual shells, specialized restricted shell programs include:

  • [http://www.pizzashack.org/rssh/ rssh] – used with OpenSSH, permitting only certain file copying programs, namely scp, sftp, rsync, cvs, and rdist
  • smrsh, which limits the commands sendmail can invoke

{{cite book

| last1 = Costales

| first1 = Bryan

| last2 = Assmann

| first2 = Claus

| last3 = Jansen

| first3 = George

| author3-link =

| last4 = Shapiro

| first4 = Gregory Neil

| title = Sendmail

| url = https://books.google.com/books?id=NQblqMiVqvQC

| accessdate = 2012-08-02

| edition = 4

| series = Oreilly Series

| year = 2007

| publisher = O'Reilly Media, Inc.

| isbn = 9780596510299

| page = 379

| quote = As an aid in preventing [...] attacks, V8.1 sendmail first offered the smrsh (sendmail restricted shell) program.

}}

See also

References