![阻止 sudo 用户的特定命令](https://linux22.com/image/122178/%E9%98%BB%E6%AD%A2%20sudo%20%E7%94%A8%E6%88%B7%E7%9A%84%E7%89%B9%E5%AE%9A%E5%91%BD%E4%BB%A4.png)
我想阻止 sudo 用户更改 root 的密码。这怎么可能?
答案1
如果您谈论的是只允许运行您选择列入白名单的一些特定命令的用户 - 在确保它们不能用于实现您想要禁止的事情之后 - 那么,拉曼赛洛帕尔 说,解决方案很简单不是包括您不希望这些用户能够以 root 身份运行的任何命令。
特别是,用户无需成为 root 即可运行passwd
命令来更改其自己的密码,因此根据您的具体需求,您可能不需要授予它们运行的能力任何 passwd
以 root 身份使用sudo
.
但是,如果您正在寻找一种有效的方法来限制用户的能力您允许谁运行任何命令作为 rootsudo
运行一些您认为危险的特定命令,那么答案是没有有效的方法来实现这一目标,您应该重新考虑是否应该向这些用户授予您现在授予他们的权力。即使您禁止特定命令,可以以 root 身份运行除少数黑名单命令之外的任何命令的用户sudo
也可以使用其他命令简单地实现完全相同的目标。
'!' 的限制操作员
从命令中“减去”命令通常效果不佳全部使用 '
!
' 运算符。用户可以通过将所需的命令复制到不同的名称然后执行该命令来轻松规避此问题。例如:bill ALL = ALL, !SU, !SHELLS
并不能真正阻止账单从运行中列出的命令 苏或者贝壳因为他可以简单地将这些命令复制到不同的名称,或者使用编辑器或其他程序的 shell 转义。因此,此类限制最多应被视为建议性的(并通过政策强化)。
一般来说,如果用户有 sudo全部没有什么可以阻止他们创建自己的程序,为他们提供根 shell(或制作自己的 shell 副本),而不管
!
用户规范中的任何 ' ' 元素如何。
这是更一般原则的一个特例,即你不能赋予某人执行任务的能力随意的系统中的行为,同时通过尝试禁止某些狭隘的行为来有效地限制它们。至少你不能仅仅通过阻止来做到这一点共同机制用于执行它们的。他们总能找到另一种方式,而且他们很可能会这样做。他们可能会找到另一种方式即使是偶然,所以你可能无法通过这种方式有效地对抗他们的粗心。
此外,如果您希望有用户管理系统,但您不信任他们会同意您的要求,不更改 root 密码,那么您真的在任何真正重要的方面信任他们吗?你真的信任他们所有的事情吗?其他他们拥有哪些能力,其中大多数更具破坏性?正如我在我的答案到是什么阻止某人设置 root 密码?关于管理 Ubuntu 系统(默认情况下,组成员身份sudo
授予管理权力):
您是该小组的成员
sudo
。您可以删除系统上的所有文件。您可以将原始数据写入硬盘,从而无法恢复地覆盖其中的内容。您可以访问其他用户的文件,即使他们设置了限制性权限。您可以将新固件安装到物理设备。您可以从影子数据库中转储用户的密码并尝试破解它们,或者只是重置它们。您可以安装侵犯用户隐私或破坏数据的恶意软件,包括键盘记录程序和勒索软件。你可以用你的网络接口做一些非常奇怪的事情。您可以使系统错误地告知用户其通信的安全性。你可以掩盖你的踪迹。你可以把所有这些权力,以及我没有列出的其他权力,交给那些会利用它们作恶的人。当谈到滥用sudo
或 Polkit 时,那些是您应该关心的事情。确实,您不应该让不受信任的人在无人监督的情况下进入您的房子,但原因并不是他们可以从里面打开门并进入。*