如何限制用户对 Linux 系统的访问

想象一下这个场景。 您希望允许用户仅执行某些任务并执行某些命令。 用户不应更改环境变量/路径。 他/她不能访问除了他/她的主目录之外的其他目录,也不能切换到其他用户等。用户只能执行系统管理员分配的一些命令。 那可能吗? 是的! 这是哪里 受限壳 进来帮忙。 使用 Restricted Shell,我们可以轻松地限制用户对 Linux 系统的访问。 一旦您将用户置于受限 shell 模式,他们就只能执行有限的命令集。 在这个简短的教程中,我们将讨论如何在 Linux 中执行此操作。 我在 CentOS 7 最小服务器上测试了本指南。 但是,它适用于大多数类 Unix 发行版。

内容

  1. 什么是受限壳?
  2. 使用受限 Shell 限制用户对 Linux 系统的访问
    1. 验证 Rbash
    2. 允许用户使用新命令
    3. 帮助我们帮助您:

什么是受限壳?

首先,让我澄清一下 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