所以我一直在研究使用su
and之间的区别sudo
,每个人似乎都同意这种sudo
方法比允许访问 root 帐户本身更安全。他们说,使用 root 帐户,您只需一个命令即可破坏整个系统。这个我明白。但是在系统上创建的初始用户也可以使用 sudo 访问所有命令。这我可以通过运行找到su -l
。如果是这种情况,那么我可以简单地运行sudo <game-ending command>
以破坏我的系统。那么,与允许我直接访问超级用户帐户相比,这种方法如何更好或更安全呢?我可以运行所有相同的命令...
是因为sudo
在命令行上使用我明确告诉计算机我认为我知道我在做什么?他们认为人们会忘记他们在超级用户帐户下,除非他们明确表示吗?
人们还指出,如果系统被外国人入侵并进入,那么在 root 帐户下将允许他们对我的系统做可怕的事情。但是在我看来,如果他们已经可以访问我的帐户并且知道我的密码,他们可以通过使用 sudo 并输入我的密码来做同样可怕的事情,因为他们甚至不需要知道超级用户的密码。我没有得到什么?
就我个人而言,我不一定认为它更安全,并且(sudo)的大部分好处都在多用户系统上。在单用户系统上,它可能是一个清洗。
好处是(排名不分先后):
sudo -i
可能是将 root 的环境变量与用户隔离的最佳方法。这不时出现,但比较深奥。请参阅https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells可能还有更多好处,但是,恕我直言,这些是主要的。
另请参阅 - https://help.ubuntu.com/community/RootSudo
尝试回答您的其他一些想法:
因此,虽然您已经观察到 sudo 的问题或缺陷,但 su 具有完全相同的漏洞,并且 su 在这些方面并不优于 sudo,恕我直言
想象一下,你有 20 分钟的时间来做一些复杂的事情。你有点宿醉,你必须赶时间。“让我们使用 su” 你说。“这会节省一些时间”是你的理由。
不小心输入
代替
您的系统现在正在自行变砖,距离截止日期还有 10 分钟。
如果您明确选择何时需要 root,则可以最大程度地减少发生这种情况的机会。可能不需要Root,
rm -r ./*
为什么要使用它?为什么要冒险?这就是“安全”在这里的含义。最大限度地降低用户(所有用户,不仅仅是初学者)犯致命错误的风险。
当然,这是一个极端的例子,不应该允许在生产环境中发生(我保证它已经发生在 prod 环境中)。
安全方面也有一些 sudo 更适合的东西。正如@Panther 所说- 日志记录、限制、root 密码是 SPOF 等)
我想在其他答案中添加一些历史观点。不幸的是,除了我自己对 Usenet 讨论和杂志文章的记忆之外,我没有准备好任何资源。
前段时间,在 1990 年代,发行版让在您自己的硬件上安装 Linux 变得更加容易,即使没有太多计算机知识。¹因此,Linux 开始吸引越来越多的人,令人惊讶的是,这些人以前没有被训练为系统管理员一些 UN*X 方言。相反,许多人习惯于(单用户)系统,如 Windows 95/98。他们了解到,大多数 Linux 系统管理任务都需要在那个奇怪的“root”帐户下工作。
因此,一些用户只是以root身份登录并使用该帐户进行所有日常工作。为什么他们必须一次又一次地输入 root 密码,或者只为一些管理命令登录一个新的
su
tty ?但是对所有事情都使用root当然不是一个好主意,因为在错误的地方使用一些粗心的命令可能会对系统造成更大的伤害。这甚至导致一些发行版(是 SuSE 吗?)为root用户修改桌面背景以显示一个大警告,即您应该将该帐户仅用于管理任务。因此,Ubuntu 方式
sudo
具有一些优势(除了Panther 已经列出的那些)。sudo
缓存您的凭据,因此对于按顺序执行的多个管理命令,您只需输入一次密码(与 相比su
)。这减少了以root权限打开 shell 或新终端的冲动。¹对于那些不敢自己动手的人,还有安装派对。
² 但是您可以在以普通用户身份登录后使用类似
sudo -i
或的命令来获取 root shell。 ³ 但是您当然知道您不应该简单地从 Internet 上复制和粘贴命令,对吗?sudo su - root
几十年来一直可以通过 ssh 禁用 root 登录。Ubuntu 禁用 root 帐户并让人们 sudo 一切的方式只不过是一种噱头。只需“sudo -s”,您就有了一个 root shell。通过 ssh 禁用 root 登录并将其保留在那里。
根据配置,
sudo <game ending command>
不一定会起作用。当然,如果sudoers
配置为“user ALL=(ALL) ALL”,sudo
则不会提供额外的保护。但是,您可以指定需要经常运行的特权命令列表,例如安装新软件包,并省略危险命令,例如rm
.这样,如果您以 身份登录,您就可以运行所有命令
root
,但是由于您只是偶尔需要它,因此运行的风险<game ending command>
将大大降低。sudo 允许您仅允许某些命令并不是 sudo 优于 su 的唯一好处。
在大多数商店中,它甚至不是最重要的好处。
使用 sudo,您可以知道谁执行了特定命令。
现在也许这对你来说无关紧要。例如,您可能是您计算机的唯一用户。如果是这样,那么 sudo 可能并不比 su 好。
但是很多主机都有不止一个管理员。
sudo 然后变得非常有用,因为如果有人做错了事,sudo 会让你知道是谁做的。
这使您可以了解错误发生的原因,并教育人们防止错误再次发生,或者在必要时从某人身上移除工具。
作为奖励,当人们知道他们的行为被记录下来时,他们通常会更加小心。
须藤并不完美。
如果两个人同时执行“sudo sh”,那么很难将命令归因于一个或另一个。
并且恶意管理员总是可以删除或编辑日志 - 尽管干净地做到这一点并不总是像人们想象的那么容易,特别是如果你有集中式日志记录。
由于原始问题中确定的所有原因,sudo 不一定会阻止愚蠢或恶意的行为。
但它确实给你一个更好的机会来防止复发。