请注意:我不是在问“sudo 做什么”,我知道答案。
有很多 IT 系统没有 sudo 的概念 - 相反,每个系统用户要么是“管理员用户”(这意味着他一登录就打开了所有系统权限),要么是一些权限较低的“一般用户”用户”。
举一个假设的例子。如果 Gmail 突然宣布,除了您常用的 Gmail 密码之外,您现在每次要发送或接收电子邮件时都必须输入额外的“sudo”密码,我会问“目的是什么,因为我已提供密码来访问与此帐户相关的所有权限?”
我问 sudo 同样的问题。如果我已经提供了访问系统的用户名和密码,为什么系统不能将我的用户帐户识别为具有管理员权限 - 而无需输入额外的 sudo 密码?
答案1
这里有许多在安全领域很常见的概念。
首先,我们始终希望用户以“最低必要权限”运行。这个想法,特别是在企业环境中(我稍后会谈到这一点),是我们希望人们拥有使用计算机所需的权限,但仅此而已。 “一切照旧”(BAU)不需要更改 /etc 中的文件;这是一个例外情况。
这导致了下一部分; “特权升级”。一旦确定了 BAU 之外的事情,我们希望用户知道他们正在做一些更有特权的事情。所以使用sudo
命令和重新输入您的密码以确认您知道自己在做什么。重新输入密码很重要,因为这意味着用户有意识地批准此操作。它也不一定必须是密码;有些版本可能需要 2 因素身份验证,这将记录您的会话并记录下来以供以后播放...
现在我们来谈谈“企业”,我们来看看Windows XP Home Edition 的经验教训。这样,您在安装时(或 OEM 首次启动)创建的用户自动拥有管理员权限。你总是以管理员身份运行。这意味着您犯的任何错误都可能会删除关键文件。或者任何允许攻击者自动执行操作的错误(例如电子邮件或图像渲染中的错误)都具有管理员权限。这就是病毒和恶意软件在旧版 Windows 版本中猖獗的原因之一。
因此,“BAU”和“特权”活动的分离超出了企业范围,进入了家庭和单用户环境。值得注意的是,从 Vista 开始,甚至 Windows 也有了“您正在尝试执行特权操作;重新输入您的密码”的概念。
总结:sudo
只是切换安全上下文的一种方式;从您可以合理预期每天进行的活动(“阅读电子邮件”、“创建文档”、“浏览网络”)以及被视为特权的内容(“创建新用户”、“更改系统配置”、“删除”另一个用户拥有的文件'...)。
对于大多数家庭用户来说,只需“重新输入密码”就足够了。对于一个企业来说事情可以得到一个很多更复杂;看https://www.sweharris.org/post/2018-08-26-minimal-sudo/举一些问题的例子。
编辑添加:
我还应该指出,Unix 也有“管理员用户”的概念;这是“root”帐户。在企业环境中,我们不喜欢人们使用它,因为我们不知道 Tom、Dick 或 Harry 是否使用 root 帐户进行更改。 sudo
是一种允许人们在可审计的情况下升级权限的方法最低特权方式。 Tom 可以运行sudo cat
并读取任何文件,但无法重新启动机器;迪克和哈利可以sudo reboot
重新启动机器,但无法读取受保护的文件。
通过这种方式,sudo
可以实现满足以下条件所需的最低权限:角色被分配。这是一项关键的安全要求。
答案2
以 root 身份运行所有内容是一个非常糟糕的主意,因为如果我告诉你rm -rf /
以 root 身份运行,它会删除你的整个操作系统,而没有 root 则会失败。拥有 sudo 的目的是让您仅在必要时提升权限。这是为了防止恶意脚本在运行时获得 root 权限,或者防止您正在运行的程序中出现允许某人获取程序权限(root 权限)的错误。
答案3
在Linux中,有“权限“ 作为。。而被知道Linux 功能。功能背后的想法是将超级用户权限分成更小的部分。这将允许进程仅拥有必要的最小超级用户权限子集。
Linux 4.3 包含环境功能,允许进程在运行后保持有效功能执行程序。这可以用来构建一种机制,默认情况下允许非 root 用户拥有有效的功能。
还有单独的可继承功能集,其工作方式略有不同。仅当该功能包含在文件功能中时,可继承的功能才会生效,从而仅允许某些可执行文件以提升的功能运行。
正如其他答案所指出的,使用特权用户执行系统管理以外的其他任务是不安全的。非特权进程(和用户)对系统造成的损害是有限的。为了保持系统的安全,仅在必要时通过用户操作来提升权限比每次不需要时记住删除权限更容易。
此外,在某种程度上,sudo
确实通过其配置将您的用户与管理角色关联起来。它提供了一个用于执行需要超级用户权限的管理任务的界面。可以将 sudo 配置为不提示密码。关于可能的安全问题,请参阅信息安全 SE:无密码 sudo 模式下 NOPASSWD 的安全性如何?
为了进一步阅读,我推荐功能手册页为了获得良好的概览和 [RFC] 功能:环境功能这解释了环境能力的基本原理和早期可继承能力中的问题。