sudo优于su有什么好处?


19

通过禁用root用户,Ubuntu(或Debian衍生产品)可带来的实际好处是什么?

我到处阅读的内容都说,是为了防止对经验不足的用户造成意外损失。我想确切地知道什么,因为sudo可以执行所有命令(我知道/使用)。

那么在什么情况下,根会造成损害,而sudo不会呢?

PS:我知道如何sudo运作。


Answers:


31

那么在哪种情况下,root可能会造成损坏,而sudo不会?

由于通常sudo每次需要执行需要特权的操作时都必须调用,因此其理由是,您将“在跳动之前先思考”,即,不只是将sudo放在某项内容的前面,而无需三思而后行。将要做。

随着su在另一方面,一旦你的时候,你在你全权处理(开放式许可)做任何事情,一切,而理由是,你有这些特权,如果你可能一会儿忘记不幸的是,执行会严重影响/损坏系统的操作-如果您没有su特权,则该命令将不会做任何严重的事情。


8
“跳楼前思考”逻辑是如此幼稚,就像在显示一个对话框时显示“您是否真的要安装TrashTheComputer.Virus:是/否?”时,用户会停止思考一样。将降低恶意软件感染率。
丹·尼利

9
@DanNeely-我不这么认为。我输入了很多命令,其中大多数命令不是必需的sudo,因此我不使用它。当我使用它时,它让我稍稍停顿了一下。是的,我是以程序员的身份发言,而不是普通用户,但话又说回来,普通用户不使用命令行。
内森·朗

2
@NathanLong在Linux上不太正确,存在此问题的原因表明“普通用户”不了解为什么要使用sudoover su。人们常常说“使用sudo,因为它比su更为安全” –天真地思考,因为它根本没有任何安全性。忘记使用su不是什么借口,如果您意外地以root用户身份运行命令,那完全是无能为力。
ash

1
@ash我仍然说普通用户不会询问两种提升用户特权的方法的相对安全性。实际上,OP对StackOverflow有疑问。但除了OP,记住15秒钟前的操作比记住昨天的操作要容易得多,并且可以轻松地进行几天的终端会话。因此,是的,不要忘记使用时su要承担的责任,但就我个人而言,我宁可不要设置炸弹,也不要假设我会记得将其解除武装。
内森·朗

16

与IMO相比,IMO sudo的主要优点是sudo可以很好地记录运行的命令,并且sudo可以更好地控制用户的操作。

su是全部或全部,但是sudo可以配置为允许访问某些但不是全部命令。

有关更完整的讨论,包括优缺点,请参见https://help.ubuntu.com/community/RootSudo


11

su-

root用户身份登录时,您启动的任何任务,触发的动作或由访问特定网站等引起的随机事件等..都将以超级用户身份运行。

须藤

调用sudo时,在运行命令时,只有该命令将以超级用户身份运行。

在执行命令之前,系统将要求您输入密码。因此需要您与用户进行交互。

也可以记录调用sudo的尝试。


2
实际上,它要求输入当前用户的密码,这使得管理根密码更加容易。如果从系统中删除了帐户,则无需重置root密码。更好的是,根帐户甚至根本不需要密码,因此根帐户无法通过强行破解而受到损害。
吉比2012年

@jippie的一般最佳做法是删除/阻止/使root密码无效,并且仅允许通过进行访问sudo su。而连字符-是被接受的标志su,将您的shell视为您以用户身份登录(运行另一组环境文件,即.bashrc / .profile)
ash

3

它与系统管理员的用户/密码管理有关。

如果您有多个用户,那么他们都应该拥有单独的帐户,并且应该能够使用这些帐户进行跟踪。这意味着人们无法隐藏自己的身份。同样,如果您需要撤消特定用户的权限,则也不必重置root密码。如果要在拥有2个以上管理员的环境中为每个人提供root密码,则一个人退出时将产生一场噩梦。您不仅必须更改它,还必须进行通信等。当其中一个笔记本电脑被盗或类似的东西时,所有这些事情也必须发生。一个帐户,每人一个密码,使管理更加简单。这与每个服务都应有自己的帐户的背后原理类似。如果一个帐户被盗用,则无需重新配置另一打服务(例如备份任务)即可使用其他帐户。

我个人也很方便,无需再输入另一个密码来跟踪,丢失和受到破坏。在RHEL上,我在配置sudo之后专门禁用了根帐户,因此不必跟踪它。有时,用户会使用sudo文件,但这在单用户模式下是可修复的。(自然,通常是生产机器。)

注意:“ sudo bash”将允许您跳过每个命令的键入sudo ...


我总是sudo mc:D
Rony 2012年

这里唯一值得投票的答案,可以清楚地回答问题,而不会进一步消除歧义,也不会误导人们对信息有错误的认识。
灰粉

@flickerfly,我相信应该在“重置该同一用户的根密码”中删除“该同一用户”-这样会更准确。
Richlv

@Richlv,你是对的。我做了您建议的编辑。不知道我打算在那里。
flickerfly

2

我认为首先,我们需要研究su和sudo实际上什么

su-代表“替代用户”。您可以使用该密码使用另一个用户的密码切换到另一个用户的外壳程序。通常与root一起使用。以root用户身份执行时不需要密码。

sudo-允许允许的用户像另一个用户一样执行指定的命令。也常与root一起使用。但是,这使您可以专门管理哪些命令可以用作其他用途。(例如,您可以使用户能够运行init.d脚本,但不能执行其他任何操作。)

请注意,您可以始终运行sudo susudo -i,这将为您提供根shell。但是,没有root密码意味着不能直接以root身份登录...这意味着没有人可以闯入该用户。

编辑:因此,您寻找的答案可能是:没有root密码会迫使您使用sudo,这反过来自然使您与可以使sudo您对以root身份运行的操作实施更大控制的理念保持一致。


我该写我自己....
user606723

2

另外,在sudo和su之间需要考虑日志记录注意事项。成为su只会以root身份执行所有操作,而auth日志中只有一行表示您已成为root,因此没有其他条目。

另一方面,Sudo-始终使用升级的priveleesw记录为您的用户ID。


0

通常,执行管理任务时以su身份登录会更容易。但是,至少有一个例外:文件所有权很重要。如果您需要用户成为文件的所有者,请以该用户身份登录并使用sudo来下载或复制文件。简单的例子是书签和墙纸文件。如果用户不拥有该文件,则Firefox“还原”书签“来自文件”的书签将失败。设置桌面墙纸时,除非拥有该文件,否则它可能无法工作。有时您只能设置特权或将其启用为可执行文件,但是如果您不是文件的所有者,则某些设置或程序会失败。


您以root身份登录并使用Firefox浏览网络?我认为这是禁用根帐户的原因。它消除了仅以root用户身份登录以供日常使用的可能性。
adempewolff 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.