在 Linux 和类 Unix 系统中,安全性至关重要,尤其是当多个用户共享一个系统时。增强安全性的一种方法是使用受限 shell。rbash或Restricted Bash就是这样一种 shell 。
本文将解释什么是rbash,它与常规 Bash shell 有何不同,并提供其使用的实际示例。
什么是 Shell?
在深入研究rbash之前,让我们先澄清一下什么是shell。
Shell 是一个允许用户通过命令行界面与 Linux 系统交互的程序。它解释用户输入的命令并与系统通信以执行这些命令。
Bash(Bourne Again SHell )是Linux 环境中使用最广泛的 shell之一。
什么是 rbash?
rbash是 Bash shell 的限制版本,旨在限制用户对某些命令和功能的访问,增强系统安全性。
当用户使用rbash登录系统时,他们不能执行可能危害系统或其他用户的任务。
Bash 和 rbash 之间的主要区别
以下是 bash 和 rbash 之间的一些主要区别:
在rbash中,用户无法使用cd 命令改变自己的目录,只能在自己的主目录中操作。
某些命令(例如exec、set和unset )受到限制,以防止用户改变 shell 的环境。
用户不能更改可能影响其他用户或系统设置的环境变量。
在 rbash 中,用户无法重定向输入或输出,这使得执行可访问或操作其指定区域之外的文件的命令变得更加困难。
这些限制使得rbash适用于想要向用户提供有限访问权限同时保持一定安全级别的场景。
何时使用 rbash
以下是使用rbash有益的一些情况:
公共终端:在图书馆或学校等环境中,用户需要访问基本命令,但不应篡改系统设置。
共享服务器:在共享系统上,rbash 可以阻止用户访问其他用户的数据或关键系统文件。
测试和学习环境:在向用户传授基本的命令行技能时,rbash 可以帮助限制他们的操作,以避免意外的系统更改。
如何在 Linux 中设置 rbash
在 Linux 系统上设置rbash是一个简单的过程,您只需按照以下步骤操作即可:
1. 在 Linux 中安装 Bash
大多数 Linux 发行版都默认安装了 Bash,您可以通过运行以下命令检查它是否已安装:
bash --version
2. 创建受限 Shell 用户
您可以专门为rbash创建一个用户。
sudo adduser anusha
创建用户后,将其默认shell更改为rbash:
sudo usermod -s /bin/rbash restricteduser
为了进一步限制此用户的环境,您可以创建一个特定目录并将其设置为其主目录:
sudo mkdir /home/anusha/bin
然后,您可以将任何希望用户访问的脚本或命令放在此 bin 目录中。
要限制用户可用的命令,请将其PATH变量设置为仅包含bin目录:
echo 'export PATH=$HOME/bin' | sudo tee -a /home/anusha/.bashrc
现在,您可以以受限用户身份登录:
su - anusha
如何在 Linux 中使用 rbash
让我们探索一些实际的例子来说明rbash如何工作。
示例 1:尝试更改目录
以受限用户身份登录后,尝试更改目录:
cd /tmp
您将收到一条错误消息-rbash: cd: restricted,如,确认用户无法在其主目录之外导航。
示例 2:运行受限命令
exec尝试执行如下命令set:
exec bash
您将收到类似这样的错误-rbash: exec: restricted,表明用户被限制执行新的 shell 实例。
示例 3:文件重定向
尝试将输出重定向到文件:
echo "Test" > test.txt
您将收到一条错误消息,表明用户无法将输出重定向到文件。
-rbash: test.txt: restricted: cannot redirect output
示例 4:允许的命令
要查看受限用户可以执行哪些命令,您可以在他们的 bin 目录中创建一个简单的脚本。
例如,创建一个名为的文件hello.sh:
echo "echo 'Hello, World!'" > /home/restricteduser/bin/hello.sh
chmod +x /home/restricteduser/bin/hello.sh
现在,当受限用户运行时:
./hello.sh
他们将看到屏幕上打印“Hello, World!”,表明他们可以执行允许的命令。
总之,rbash是增强多用户 Linux 环境中安全性的强大工具。通过限制对某些命令和功能的访问,它有助于维护系统完整性,同时允许用户执行基本任务。