CentOS使用rbash限制普通用户访问系统指定命令

什么是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
# ln -s /bin/bash /bin/rbash

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

1
# useradd xubo -s /bin/rbash

设置xubo的密码

1
# passwd xubo

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

1
# mkdir /home/xubo/bin

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

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

1
2
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。

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

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

1
# vi /home/xubo/.bash_profile

修改PATH变量,如下所示。

1
PATH=$HOME/bin

验证Rbash

现在,从root用户注销并登录到新创建的用户,即我们的例子中的xubo。
然后,运行一些命令来检查它是否有效。例如,我想清除终端。

1
$ clear

如下:

1
-rbash: clear: command not found

1
$ cd /root

如下:

1
-rbash: cd: restricted

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

1
$ cat > file.txt

如下:

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

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

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

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

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

本文标题:CentOS使用rbash限制普通用户访问系统指定命令

文章作者:Francis

原始链接:http://www.cnops.com/posts/bff80f73.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。