可以使用Restricted Shell。
Restricted Shell用于限制用户对Linux系统的访问。一旦将用户置于受限 shell 模式,他们就只能执行有限的命令集。
我在 CentOS 7 最小服务器上测试了本指南。但是,它适用于大多数类 Unix 发行版。
什么是Restricted Shell?
首先,让我澄清一下 Restricted Shell 到底是什么。它不像 Bash、Korn Shell 等那样是一个单独的 shell。如果您使用“rbash”、“--restricted”、“-r”选项启动任何现有的 shell,那么它将成为受限 shell。例如,Bourne shell 可以作为受限 shell 使用命令bsh -r启动,Korn shell 使用命令ksh -r启动。
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 限制用户对 Linux 系统的访问
首先,从 Bash 创建一个名为rbash的符号链接,如下所示。以下命令应以root用户身份运行。
# ln -s /bin/bash /bin/rbash
接下来,创建一个名为“ostechnix”的用户,使用rbash作为他/她的默认登录 shell。
# useradd ostechnix -s /bin/rbash
为新用户设置密码。
# 密码 ostechnix
在新用户的主文件夹中创建一个bin目录。
# mkdir /home/ostechnix/bin
现在,我们需要指定用户可以运行哪些命令。
在这里,我将让用户只运行“ls”、“mkdir”和“ping”命令。您可以分配您选择的任何命令。
为此,请运行以下命令:
# 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 根。/home/ostechnix/.bash_profile
# chmod 755 /home/ostechnix/.bash_profile
编辑 /home/ostechnix/.bash_profile文件:
# vi /home/ostechnix/.bash_profile
如下修改PATH 变量。
[...]
PATH=$HOME/bin
[...]
按ESC键并键入:wq以保存并关闭文件。
现在,当用户登录时,受限 shell(rbash) 将作为默认登录 shell 运行并读取.bash_profile,这会将 PATH 设置为$HOME/bin以便用户只能运行ls、mkdir和平命令。受限制的 shell 将不允许用户更改PATH,并且.bash_profile的权限将不允许用户更改环境以在下一次登录会话期间绕过限制。
验证 Rbash
现在,从 root 用户注销并使用新创建的用户重新登录,在我们的例子中即 ostechnix。
然后,运行一些命令来检查它是否有效。例如,我想清除终端。
为此,我跑了:
$clear
示例输出:
-rbash:clear:找不到命令
您不能使用cd命令更改到不同的目录。
$ cd /root
示例输出:
-rbash: cd: 限制
您也不能使用 > 运算符重定向输出。
$ cat > 文件.txt
示例输出:
-rbash: file.txt: restricted: 无法重定向输出
用户“ostechnix”只能使用您指定的命令(当然是系统管理员)。在我们的例子中,用户可以执行 ls、mkdir 和 ping 命令。
$ ls
$ mkdir 操作系统
$ ping -c 3 google.com
除了这三个命令,用户不能执行任何操作。他/她完全在你的控制之下。
网友回复