从安全角度来看,sudo 命令到底有什么意义?

从安全角度来看,sudo 命令到底有什么意义?

这个问题其实不是 Ubuntu 特有的。我的理解是,这sudo是为了防止未经授权的用户执行管理和其他可能有害的操作。前提是有人在我的 PC 前使用它……或者可能是远程(但在这种情况下,他们应该知道我连接到计算机的登录密码,这通常与我的sudo密码相同……)所以有人在我的 PC 前,她无法在不知道我的sudo密码的情况下删除某些重要文件或目录或安装有害软件,但她可以在没有密码的情况下做很多其他有害和侵犯隐私的事情sudo。所以,每次打开文件管理器或终端之前都要求管理员权限不是更好吗?我知道这可能很耗时且令人筋疲力尽……

答案1

首先,您需要了解 Linux 中的用户概念,特别是用户root。为了使这个答案不超过字符限制(并切中主题),我建议您阅读这一页其次是这个。实际上,您需要知道的只是以下内容:

Linux 是一个多用户操作系统,每个用户都拥有有限的权限和范围,这些权限和范围由其用户组定义。每个 Linux 系统都有一个称为用户root(UID 0,也称为超级用户)的角色,他们是完全有权威的管理员。他们root知道一切、root看到一切、root控制一切。

的概念sudo来自于旧的 UNIX 命令su(来自s巫婆ser),它允许任何用户登录到系统上的任何其他用户。任何具有管理权限的人都可以输入su root(或只是su)来升级到 root 用户以执行任何管理任务。遗憾的是,这有一些问题。在具有多个管理员的系统中,每个人都共享 root 密码。这意味着,如果管理员离开公司,则需要更改 root 密码并重新分发给所有其他管理员。这有时会非常耗时,否则会非常麻烦。

现在,输入sudo.sudo的工作原理不同了。它不再要求用户知道 root 帐户登录名,而是sudo允许用户root根据文件规则自行升级到该帐户(或任何其他帐户) /etc/sudoers。现在,撤销或添加管理员很简单 - 只需从组或文件中添加或删除用户即可。因此,可以“禁用”root 帐户,从而阻止除实际管理员之外的任何人访问。

在几乎所有情况下,这都是 的sudo用途。它根据 中定义的规则root向管理员(组admin或 的成员)授予权力。sudo/etc/sudoers

(无意)地,这也带来了巨大的安全优势。管理员可以像其他用户一样以非特权模式运行。然后,他们可以在需要时升级或“启用”管理权限,并在之后立即撤销这些权限。通常,这仅用于单个命令(例如sudo apt install cowsay),但它也可以是一个完整的 root shell。

这种隔离反过来也可以保护整个系统(请记住,*NIX 最初是一个由许多人使用的多用户环境)免受从管理员帐户执行的恶意代码的侵害,无论是通过恶意软件还是有人登录到管理员的活动终端。同样,sudo允许记录和随时审查每个管理员操作。与旧su方法相比,您实际上不知道谁运行了什么命令。

此外,基于 Linux 的权限模型,sudo可以阻止用户进行潜在的危险错误例如意外卸载关键程序、擦除硬盘数据,或者其他任何未经确认就不应该做的事情。

总结:

实际上,sudo它只是旧 *NIX 安装的真正多用户环境的一个(非常有用的)遗留。但是,它仍然保留了其实用性,可以保护系统免受恶意软件或会话劫持。在典型的 *NIX 心态中,保护管理员的实际帐户是留给管理员的一项工作。

如果您担心有人在您外出时坐在您的电脑前并侵犯您的隐私,只需锁定您的屏幕/会话即可。即便如此,物理访问是杀手

答案2

用户空间无法访问核心系统文件,这可以防止病毒和 root kit 等恶意代码自行安装。

sudo 命令为键盘上的人员提供根访问权限,以便他/她可以修改安装。

您几乎无能为力,无法防止有人知道您的密码并坐在您的电脑前。

答案3

sudo有一个特定的目的:它允许授权用户以受控的方式提升其当前权限。其实际影响取决于您在系统中如何使用权限。通常,用户不会使用权限来隔离其数据,因此sudo不会保护这些数据。

然而,如果你真的想,你可以使用 sudo 来保护更多的东西;例如,您可以创建另一个仅用于运行 Web 浏览器的用户帐户,这意味着使用您的普通帐户的人无法在不经过 的情况下访问您的 cookie 或缓存sudo。您可以创建另一个用户来编辑办公文档,以保护它们免受您的普通帐户所做的更改。等等。通常不会这样做,因为这会带来很大的不便,而好处却很少,但如果数据足够敏感,这是可以做到的。

另一点是,这些特权适用于全部程序。限制对终端和文件管理器的访问并不能防止通过文字处理器进行的未经授权的更改(比如我加载了一些你最近编辑的文档并删除了所有文本),但如果登录用户没有查看或编辑文件的权限,那么程序无需 就可以编辑它们sudo,无论是终端、文件管理器还是其他。

答案4

因此,正如您自己所说,该sudo命令正在完美地完成其工作,它正在处理它应该做的事情:

  • 根据定义,它决定谁被允许做什么事情?
    • 基于/etc/sudoeres/etc/sudoeres.d
    • 例如:是否bob允许用户在机器上rm使用用户身份运行?rootALL
  • 然后它将检查以确保用户确实是他所声称的那个人。
    • 通过询问密码

这里的错误在于,您允许不受信任的用户使用您的系统,这就是造成损害的原因(不是对系统,而是对您的帐户)。

您不应该允许任何您不信任的人使用您的计算机,这就像运行恶意程序并且什么也不会发生一样。


使用sudo,不允许任何人使用您的帐户,您可以安全地去......

相关内容