如何限制用户对Linux系统的访问权限
使用受限制的shell,我们可以轻松限制用户对Linux系统的访问权限。
将用户放在受限制的shell模式下,允许它们仅执行有限的命令集。
在这篇简短的教程中,我们将讨论如何在Linux中执行此操作。
我在CentOS 7最小服务器上测试了本教程。
但是,它将适用于大多数unix的分布。
什么是受限制的shell ?
首先,让我澄清完全限制的shell是什么。
它不是像Bash,Korn shell等的单独shell 。
如果我们使用"rbash"启动任何现有shell,"--recrestics","-r"选项,那么它将变为受限制的shell。
例如,可以使用命令BSH -R和具有命令KSH -R的korn shell启动Bourne shell。
受限制的shell将限制用户执行大多数命令并从更改当前工作目录。
受限制的shell将对用户施加以下限制:
- 它不会允许我们执行CD命令。所以你不能去任何地方。我们只需留在当前的工作目录中。
- 它不会允许我们修改$path,$shell,$bash_env或者$env环境变量的值。
- 它不允许我们执行包含一个/(斜线)字符的程序。例如,我们无法运行/usr/bin/uname或者./uname命令。但是,我们可以执行uname命令。换句话说,我们允许我们仅在当前路径中运行命令。
- 我们无法使用'>','> |','<>','>&','&>'和'>>'重定向运算符来重定向输出。
- 它不会让我们在脚本中退出受限制的shell模式。
- 它不允许我们关闭"设置+ R"或者"设置+ O限制"的受限Shell模式。
当大量用户使用共享系统时,这可能非常有用。
因此,如果要允许用户仅执行特定命令,则受限制的shell是一种方法来执行此操作。
使用受限制的shell限制用户对Linux系统的访问
首先,使用Bash创建名为RBASH的符号链接,如下所示。
以下命令应以root用户身份运行。
# ln -s /bin/bash /bin/rbash
接下来,使用RBASH创建名为"OniToro"的用户作为他/她的默认登录shell。
# useradd theitroad -s /bin/rbash
将密码设置为新用户。
# passwd theitroad
在新用户的主文件夹中创建一个bin目录。
# mkdir /home/theitroad/bin
现在,我们需要指定用户可以运行的命令。
其中我将让用户仅运行"LS","MKDIR"和"ping"命令。
我们可以分配我们选择的任何命令。
为此,请运行以下命令:
# ln -s /bin/ls /home/theitroad/bin/ls
# ln -s /bin/mkdir /home/theitroad/bin/mkdir
# ln -s /bin/ping /home/theitroad/bin/ping
现在,我们了解为什么我们在较早的步骤中创建了"bin"目录。
除了上述三个命令之外,用户无法运行任何命令。
接下来,防止用户修改.bash_profile。
# chown root. /home/theitroad/.bash_profile
# chmod 755 /home/theitroad/.bash_profile
编辑/home/theitroad/.bash_profile文件:
# vi /home/theitroad/.bash_profile
修改如下所示的路径变量。
[...] PATH=$HOME/bin [...]
按ESC键和类型:WQ保存并关闭文件。
现在,当用户登录时,受限制的shell(rbash)将作为默认登录shell运行并读取.bash_profile,它将设置为$home/bin的路径,以便用户只能运行LS,MKDIR和ping命令。
受限制的shell将不允许用户更改路径,并且对.bash_profile的权限将不允许用户更改环境以绕过下一个登录会话期间的限制。
验证rbash.
现在,从root用户注销并使用新创建的用户登录,例如:在我们的情况下onatroad。
然后,运行一些命令以检查它是否有效。
例如,我想清除终端。
为此,我运行了:
$clear
示例输出:
-rbash: clear: command not found
我们无法使用CD命令更改为不同的目录。
$cd /root
示例输出:
-rbash: cd: restricted
我们也无法使用>运算符重定向输出。
$cat > file.txt
示例输出:
-rbash: file.txt: restricted: cannot redirect output
允许用户"theitroad"仅使用我们分配的命令(当然是系统管理员)。
在我们的情况下,用户可以执行LS,MKDIR和Ping命令。
$ls
$mkdir theitroad
$ping -c 3 google.com
除了这三个命令之外,用户无法执行任何内容。
他/他完全在你的控制下。
允许向用户提供新命令
如果要为用户分配更多命令,请从当前用户注销并再次退回到root用户,并分配如下所示的命令。
例如,要允许用户(IniToroad)执行RM命令,请将以下命令用作root用户。
# ln -s /bin/rm /home/theitroad/bin/rm
现在用户可以使用"rm"命令。