想象一下这个场景。 您希望允许用户仅执行某些任务并执行某些命令。 用户不应更改环境变量/路径。 他/她不能访问除了他/她的主目录之外的其他目录,也不能切换到其他用户等。用户只能执行系统管理员分配的一些命令。 那可能吗? 是的! 这是哪里 受限壳 进来帮忙。 使用 Restricted Shell,我们可以轻松地限制用户对 Linux 系统的访问。 一旦您将用户置于受限 shell 模式,他们就只能执行有限的命令集。 在这个简短的教程中,我们将讨论如何在 Linux 中执行此操作。 我在 CentOS 7 最小服务器上测试了本指南。 但是,它适用于大多数类 Unix 发行版。
内容
什么是受限壳?
首先,让我澄清一下 Restricted Shell 到底是什么。 它不是像 Bash、Korn Shell 等那样的单独 shell。如果您使用“rbash”、“–restricted”、“-r”选项启动任何现有的 shell,那么它将成为受限制的 shell。 例如,可以使用以下命令将 Bourne shell 作为受限 shell 启动 bsh -r,以及带有命令的 Korn shell ksh -r.
Restricted Shell 将限制用户执行大多数命令和更改当前工作目录。 Restricted Shell 将对用户施加以下限制:
- 它不允许你执行 光盘 命令。 所以你哪儿也去不了。 您可以简单地留在当前工作目录中。
- 它不允许您修改 $路径, $壳牌, $BASH_ENV 或者 $ENV 环境变量。
- 它不允许您执行包含 /(斜杠)字符的程序。 例如,您不能运行 /usr/bin/uname 或者 ./uname 命令。 但是,您可以执行 uname 命令。 换句话说,您只能在当前路径中运行命令。
- 您不能使用 ‘>’、’>|’、’‘、’>&’、’&>’ 和 ‘>>’ 重定向运算符来重定向输出。
- 它不会让您摆脱脚本中的受限 shell 模式。
- 它不允许您使用以下命令关闭受限 shell 模式 ‘设置+r’ 或者 ‘设置 +o 限制’.
这在大量用户使用共享系统时非常有用。 所以,如果你想让用户只执行特定的命令, 受限壳 是做到这一点的一种方法。
使用受限 Shell 限制用户对 Linux 系统的访问
首先,创建一个名为 rbash 来自 Bash,如下所示。 以下命令应运行为 根 用户。
# ln -s /bin/bash /bin/rbash
接下来,创建一个名为 “骨科” 和 rbash 作为他/她的默认登录 shell。
# useradd ostechnix -s /bin/rbash
为新用户设置密码。
# passwd ostechnix
创建一个 斌 新用户的主文件夹中的目录。
# mkdir /home/ostechnix/bin
现在,我们需要指定用户可以运行哪些命令。
在这里,我打算让用户只运行 “ls”, “mkdir”, 和 “平” 命令。 您可以分配您选择的任何命令。
为此,请运行以下命令:
# ln -s /bin/ls /home/ostechnix/bin/ls
# ln -s /bin/mkdir /home/ostechnix/bin/mkdir
# ln -s /bin/ping /home/ostechnix/bin/ping
现在,您了解我们为什么在前面的步骤中创建“bin”目录了。 用户不能运行除上述三个命令之外的任何命令。
接下来,阻止用户修改 .bash_profile.
# chown root. /home/ostechnix/.bash_profile
# chmod 755 /home/ostechnix/.bash_profile
编辑 /home/ostechnix/.bash_profile 文件:
# vi /home/ostechnix/.bash_profile
修改 路径变量 如下所示。
[...] PATH=$HOME/bin [...]
按 退出 键和类型 :wq 保存和 close 文件。
现在,当用户登录时,受限 shell(rbash) 将作为默认登录 shell 运行并读取 .bash_profile,这会将 PATH 设置为 $HOME/bin 这样用户就只能运行 ls, mkdir 和 平 命令。 受限外壳不允许用户更改 小路, 和权限 .bash_profile 将不允许用户在下一次登录会话期间更改环境以绕过限制。
验证 Rbash
现在,从 root 用户注销并使用新创建的用户重新登录,在我们的例子中就是 ostechnix。
然后,运行一些命令来检查它是否有效。 例如,我想清除终端。
为此,我跑了:
$ clear
样本输出:
-rbash: clear: command not found
你不能使用 光盘 命令切换到不同的目录。
$ cd /root
样本输出:
-rbash: cd: restricted
您也不能使用 > 运算符重定向输出。
$ cat > file.txt
样本输出:
-rbash: file.txt: restricted: cannot redirect output