什么是Restricted Shell?

Restricted Shell究竟是什么?它不是像Bash,Korn Shell等单独的shell。如果使用“rbash”,“ - restricted”,“ - r”选项启动任何现有的shell,那么它将成为Restricted shell。例如,Bourne shell可以使用命令bsh -r作为受限shell启动,使用命令ksh -r启动Korn shell 。

Restricted Shell将限制用户执行大多数命令和更改当前工作目录。Restricted Shell将对用户施加以下限制。它不允许您执行cd命令。所以你不能去任何地方。您可以简单地留在当前的工作目录中。

它不允许您修改 $ PATH,$ SHELL,$ BASH_ENV或$ ENV环境变量的值。

它不允许您执行包含/(斜杠)字符的进程。例如,您无法运行/usr/bin/uname或./uname命令。但是,您可以执行uname命令。换句话说,您只能在当前路径中运行命令。

您无法使用’重定向输出’>’,’> |’,’<>’,’>&’,’&>’,’和’>>’重定向运算符。

它不允许您在脚本中退出受限制的shell模式。

它不允许您使用’set + r’或’set + o restricted’关闭受限制的shell模式。

当大量用户使用共享系统时,这非常有用。因此,如果您希望允许用户仅执行特定命令,则Restricted Shell是执行此操作的一种方法。

使用Restricted Shell模式

首先,从Bash 创建一个名为rbash的符号链接,如下所示。以root用户身份运行以下命令。

1

接下来,创建一个名为“xubo”的用户,将rbash作为他/她的默认登录shell。

1

设置xubo的密码

1

在新用户的主文档夹中创建bin目录。

1

现在,我们需要指定用户可以运行的命令。

在这里,我将让用户只运行“ls”,“mkdir”和“ping”命令。您可以指定您选择的任何命令。

为此,请运行以下命令:


3# ln -s /bin/ls /home/xubo/bin/ls
# ln -s /bin/mkdir /home/xubo/bin/mkdir
# ln -s /bin/ping /home/xubo/bin/ping

现在,您了解为什么我们在前面的步骤中创建了“bin”目录。除上述三个命令外,用户无法运行任何命令。

接下来,阻止用户修改.bash_profile。


2# chown root. /home/xubo/.bash_profile
# chmod 644 /home/xubo/.bash_profile

编辑/home/xubo/.bash_profile文档:

1# vi /home/xubo/.bash_profile

修改PATH变量,如下所示。

1PATH=$HOME/bin

验证Rbash

现在,从root用户注销并登录到新创建的用户,即我们的例子中的xubo。

然后,运行一些命令来检查它是否有效。例如,我想清除终端。

1$ clear

如下:

1-rbash: clear: command not found1$ cd /root

如下:

1-rbash: cd: restricted

您也不能使用>运算符重定向输出。

1$ cat > file.txt

如下:

1-rbash: file.txt: restricted: cannot redirect output

允许用户“xubo”仅使用您分配的命令(系统管理员,当然)。在我们的例子中,用户可以执行ls,mkdir和ping命令。


3$ ls
$ mkdir dir1
$ ping www.baiked.com

除了这三个命令之外,用户无法做任何事情。他/她完全在你的控制之下。如果要为他/她分配更多命令,请再次登录root用户并分配命令,如下所示。

例如,我想让他/她执行rm命令,所以我以root用户身份运行以下命令。

1# ln -s /bin/rm /home/xubo/bin/rm