为用户提供严格限制的 Shell 访问权限

为用户提供严格限制的 Shell 访问权限

我正在开发一个内部文件共享系统,例如 Google Drive/Dropbox,对用户自己的文件夹的 shell 访问非常有限。用户必须能够使用mv ssh ls cd命令来访问和导航自己的文件夹,有些用户还能够运行gcc来编译自己的程序(但不允许他们运行自己编译的程序)。唯一的问题是我不希望人们在系统文件中漫游或修改系统设置/变量。

首先,我认为使用容器/BSD Jails 可能是解决方案,但考虑到该系统可能有超过 300 个用户,它增加了不必要的复杂性和开销。

开放的野生互联网上有哪些解决方案?谢谢!

答案1

首先,我要说的是,无论你在这个领域做什么,用户都会找到创造性的方法来绕过你所做的事情。

Bash 提供了“受限 shell”的概念,它将阻止用户使用cd并限制他们只能使用其路径中预先存在的命令。您可以创建一个目录,其中包含指向“允许”命令集的符号链接,并将用户的路径配置为指向该目录:

https://www.gnu.org/software/bash/manual/html_node/The-Restricted-Shell.html

$ PATH=/tmp/ex rbash
$ ls
src
$ cd /
rbash: cd: restricted
$ export PATH=/usr/bin:$PATH
rbash: PATH: readonly variable
$

但请注意,如果您将一个命令放在可以执行任意命令的路径中,这将无济于事:

$ rbash
$ cd /tmp
rbash: cd: restricted
$ vim
:!/bin/bash
$ cd /tmp
$

甚至 Bash 受限 shell 的文档也说:

现代系统提供了更安全的方法来实施受限环境,例如监狱、区域或容器。

相关内容