Restricted shell
Page Module:Message box/ambox.css has no content.
This article contains instructions or advice. (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 prevent execution of entirely untrusted software. A restricted mode operation is found in the original Bourne shell[1] and its later counterpart Bash,[2] and in the KornShell.[3] 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 Page Template:Mono/styles.css has no content.sh, and its POSIX workalikes, is used when the interpreter is invoked in one of the following ways:
- Page Template:Kbd/styles.css has no content.sh -r note that this conflicts with the "read" option in some Page Template:Mono/styles.css has no content.sh variants
- Page Template:Kbd/styles.css has no content.rsh note that this may conflict with the remote shell command, which is also called Page Template:Mono/styles.css has no content.rsh on some systems
The restricted mode of Bash is used when Bash is invoked in one of the following ways:
- Page Template:Kbd/styles.css has no content.rbash
- Page Template:Kbd/styles.css has no content.bash -r
- Page Template:Kbd/styles.css has no content.bash --restricted
Similarly KornShell's restricted mode is produced by invoking it thus:
- Page Template:Kbd/styles.css has no content.rksh
- Page Template:Kbd/styles.css has no content.ksh -r
Setting up rbash
For some systems (e.g., CentOS), the invocation through Page Template:Mono/styles.css has no content.rbash is not enabled by default, and the user obtains a command not found error if invoked directly, or a login failure if the /etc/passwd file indicates Page Template:Mono/styles.css has no content./bin/rbash as the user's shell.
It suffices to create a link named Page Template:Mono/styles.css has no content.rbash pointing directly to Page Template:Mono/styles.css has no content.bash. Though this invokes Bash directly, without the Page Template:Kbd/styles.css has no content.-r or Page Template:Kbd/styles.css has no content.--restricted options, Bash does recognize that it was invoked through Page Template:Mono/styles.css has no content.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:[2]
- 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.[4]
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 Page Template:Mono/styles.css has no content.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:
rssh– used with OpenSSH, permitting only certain file copying programs, namely scp, sftp, rsync, cvs, and rdistsmrsh, which limits the commands sendmail can invoke[5]
See also
References
Page Template:Reflist/styles.css has no content.
- ^ Page Module:Citation/CS1/styles.css has no content."POSIX sh specification". Archived from the original on 2014-12-21. Retrieved 2010-10-04.
- ^ a b GNU Bash manual
- ^ ksh manual, Solaris (SunOS 5.10) manual page, Oracle Inc.
- ^ ksh(1) manual page, IBM AIX documentation set
- ^
Page Module:Citation/CS1/styles.css has no content.Costales, Bryan; Assmann, Claus; Jansen, George; Shapiro, Gregory Neil (2007). Sendmail. Oreilly Series (4 ed.). O'Reilly Media, Inc. p. 379. ISBN 9780596510299. Retrieved 2012-08-02.
As an aid in preventing [...] attacks, V8.1 sendmail first offered the smrsh (sendmail restricted shell) program.