+
80
-

linux centos如何限制用户执行某些特定命令?

linux centos如何限制用户执行某些特定命令?比如不想让用户执行rm命令

网友回复

+
0
-

可以使用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 [...]

800_auto 按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: 无法重定向输出 800_auto 用户“ostechnix”只能使用您指定的命令(当然是系统管理员)。在我们的例子中,用户可以执行 ls、mkdir 和 ping 命令。 $ ls $ mkdir 操作系统 $ ping -c 3 google.com 800_auto 除了这三个命令,用户不能执行任何操作。他/她完全在你的控制之下。

+
0
-

还可以先把系统的常用命令所在目录设置成只有root组用户才可以执行。然后把特定用户所需要使用的命令拷贝到该用户的家目录的bin目录中,再把这些命令的所有者改成该用户。
+
0
-

如果是限制rm命令的使用,可以使用chattr 来防止文件被删除或修改,命令如下:

chattr +i /etc/resolv.conf

Linux chattr命令用于改变文件属性。

这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式: a:让文件或目录仅供附加用途。

b:不更新文件或目录的最后存取时间。

c:将文件或目录压缩后存放。

d:将文件或目录排除在倾倒操作之外。

i:不得任意更动文件或目录。

s:保密性删除文件或目录。

S:即时更新文件或目录。

u:预防意外删除。

语法

chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

参数

-R 递归处理,将指定目录下的所有文件及子目录一并处理。 -v<版本编号> 设置文件或目录版本。 -V 显示指令执行过程。 +<属性> 开启文件或目录的该项属性。 -<属性> 关闭文件或目录的该项属性。 =<属性> 指定文件或目录的该项属性。 实例 让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

chattr +a /var/log/messages

我知道答案,我要回答