什么是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