为什么以root用户身份登录很不好?


192

我经常在论坛或其他网站上看到过很多帖子,您在这里看到人们在开玩笑以root身份运行/登录,好像这很糟糕,每个人都应该知道。但是,有关此事的搜索没有太多发现。

这可能是Linux专家广为人知的,但我真的不知道为什么。我记得几年前第一次尝试Linux(Redhat和Mandrake)时始终以root用户身份运行,因此不记得遇到任何问题。

实际上,有些发行版的背景为鲜红色,并带有警告标志,作为根用户(SuSe?)的墙纸。我仍然在Windows安装中经常使用“管理员”帐户,也从未遇到任何问题。


15
我认为以root身份运行程序没有问题。只是,如果您在Linux中不太明智,则可能会损害操作系统的核心(即使sudoer也会这样做)。除此之外,我认为没有任何问题。但这只是我的观点。
Gaurav Butola,2010年

1
相关问题在这里
loevborg

发行版之间进入root模式的难度有所不同。我个人为Fedora不允许您开箱即用而感到恼火。不过,OpenSUSE和Ubunto确实已预先配置了sudo ...,因此,如果选择正确的发行版,则可以最大程度地减少无法访问文件的烦恼。
djangofan 2011年

4
@GauravButola即使您是专家,如果应用程序受到威胁,这仍然不是一个好主意。
13年

2
@DaboRoss他在Windows中以管理员身份工作的OP注释;在该操作系统我的(小)的经验,在我看来,这更像是Ubuntu的:它是在这个意义上它可以做任何你想要的特权帐户,但它要求之前允许例如安装新的软件。因此,等效于在Windows中翻译成Ubuntu的用户使用“管理员”用户将以sudo配置运行主用户,这样它就不会要求通过-直接以root用户身份运行更为危险。
Rmano 2014年

Answers:


154

它破坏了已经存在多年的安全模型。应用程序本应以非管理安全性运行(或作为普通应用程序运行),因此您必须提升其特权才能修改基础系统。例如,您不希望/usr由于错误而最近崩溃的Rhythmbox破坏整个目录。或刚刚在ProFTPD中发布的漏洞,它使攻击者可以获得ROOT Shell。

在任何操作系统上,最好的做法是在用户级别上运行应用程序并将管理任务留给根用户,并且仅根据需要。


5
...并保护您免受灾难中琐碎错误的影响。自1990年以来,我一直是Unix用户/ adm,但是我仍然可以肯定在正确的错误位置打滑,以便进行rm -rf tmp/tests/*...
Rmano 2014年

9
1.)大多数人会认为自己的主目录比root目录更重要,因为前者无法重新安装。所以我看不出你的意思。2.)就安全性而言,您是对的。但是,从Windows(到处都是恶意软件),自从我就一直使用管理员帐户(和很多人一样)开始,我很难考虑到这是真正的危险。我实在太懒了,无法sudo在Linux中输入每第二个命令的密码和密码。Linux用户不是应该很懒吗?????
布劳伦

不同意-_-:〜:|
Edgy1

@LazyPower感谢您编辑答案,但现在我不明白了。要修改我的私有Ubuntu〜文件夹,程序不需要sudo权限。Rhythmbox的CAN消灭我的整个$ HOME / Music目录!这就是我所关心的!这与root权限有何关系?
布劳伦

1
@Blauhirn真是个好电话。我只是发送了后续编辑,以反映我们不希望它删除/ usr的全部。在保护$ HOME文件夹方面,没有什么比好的备份更能帮助您了。我认为,这种特殊情况不会像良好实践那样与安全性相关。再次感谢您的标注。
lazyPower

79

一句话:安全。

  1. 您以root用户身份登录=所有应用程序都以root用户特权运行-Firefox,Flash,OpenOffice等中的每个漏洞现在都可以破坏您的系统,因为可能的病毒现在可以随处访问。是的,Ubuntu / Linux的病毒很少,但这也是由于良好的安全性和默认的非特权用户所致。
  2. 这不仅与病毒有关-应用程序中的小错误可能会擦除某些系统文件或...
  3. 以root用户身份登录后,您可以执行所有操作-系统不会询问您!您要格式化该磁盘吗?好的,只需单击一下就可以完成,因为您是root用户,并且知道自己在做什么...

16
数据文件,这些文件都是由我的用户帐户拥有,是有价值的比我的系统文件。以用户身份登录时,上述所有示例仍然存在问题,除了可以轻松替换的系统文件得到保护之外。
kbeta

5
@kbeta假设您正在计算机上运行,​​其中唯一贵重物品是数据和系统文件。实际上,Linux通常用于有许多用户同时使用系统的系统中。在这种情况下,系统(以及因此的系统文件)的稳定性就更重要了,其他用户文件也很重要。
埃里克·保利

2
@kbeta足够公平,但是损坏的系统配置也可能会对您的数据造成威胁...当然,进行备份将是一个好主意,无论您的系统当前是否处于危险之中。使用灾难恢复计划工作当前的备份会更好。
Pryftan

47

以root身份运行是不好的,因为:

  1. 愚蠢:没有什么可以阻止您做愚蠢的事情。如果您尝试以任何可能有害的方式更改系统,则需要执行sudo,这几乎可以确保在输入密码时暂停,以使您意识到您将要进行可能的大笔/昂贵的更改。
  2. 安全性: 在这个问题中已经提到过很多次了,但是基本上这是一回事,如果您不知道管理员用户的登录帐户,就很难破解。root表示您已经拥有工作凭据集的一半。
  3. 您实际上并不需要它:如果您需要以root用户身份运行多个命令,并且在sudo过期后不得不多次输入密码而感到烦恼,那么您所要做的就是sudo -i成为root用户。是否想使用管道运行一些命令?然后使用sudo sh -c "comand1 | command2"
  4. 您始终可以在 故障恢复控制台中使用它:故障恢复控制台使您可以尝试从做一些愚蠢的事情或修复由应用程序引起的问题中恢复(您仍然必须以sudo的身份运行它):) Ubuntu没有密码对于这种情况下的root帐户,但是您可以在线搜索更改该帐户,这将使对您的邮箱具有物理访问权限的任何人都很难造成伤害。

之所以无法找到关于它的坏处的信息,是因为,好吧,互联网上的数据太多了:),并且长期以来一直在使用Linux的许多人都像您一样。这种关于root帐户的思考方式是相当新的(也许是十年?),许多人仍然因必须使用sudo而感到烦恼。特别是如果他们在服务器上工作,这意味着他们打算进行系统更改。大多数系统管理员可能是从以前的不良经验和安全标准中汲取经验的,但是他们仍然不喜欢它:)。


“也许十年?” 甚至比您撰写本文时还要长得多。即使没有sudo,也没有提及su例如轮组。特权分离始终很重要,而且一直很重要,而且永远很重要。与许多年前相比,Otoh使用基于Unix的操作系统的人并不多,许多这样做的人一直都是管理员。
Pryftan

36

这是一个很好的问题。我认为答案会有所不同,具体取决于您是在谈论服务器还是台式机安装。

在台式机上,很少使用该root帐户。实际上,Ubuntu附带禁用了根访问权限。所有需要超级用户特权的更改都通过完成sudo,其图形识别为gksudokdesudo。鉴于设置root密码很容易,为什么人们不这样做呢?

原因之一是它为您提供了额外的安全性。如果您按原样运行程序root并且利用了安全漏洞,则攻击者可以访问所有数据并可以直接控制硬件。例如,它可能会在您的内核中安装木马或键盘记录程序。但是,实际上,即使没有超级用户特权,攻击也可能造成大量损失。毕竟,无需root用户访问权限即可访问所有用户数据(包括文档和存储的密码)。

在单用户系统上,更有效的一点是可以防止用户意外使系统无法使用。如果用户无意中发出了删除所有文件的命令,即使数据丢失,他们仍将能够引导系统。

此外,当今大多数面向用户(X11)的应用程序均基于以下假设:它们以常规用户帐户运行且没有管理员权限。因此,当以.NET运行时,某些程序可能会出现异常root

在仅具有非图形外壳程序访问权限的多用户系统上,许多这些原因都不适用。但是,Ubuntu仍然合理地默认为无法访问的root帐户。一方面,sudo通过安全漏洞获得对具有权限的用户帐户的访问与对的访问之间存在真正的区别root,因为在第一种情况下,破坏其他用户将需要运行,sudo并且仍然会提示输入帐户密码作为密码。额外的安全步骤。另外,从用户帐户执行许多管理任务并仅sudo在绝对需要超级用户特权时调用才很有用。因此,从源代码安装程序时,建议构建源代码-运行configuremake-在用户目录中,仅sudo make install在最后一步中使用。再次,这使自己(和多用户系统的其他用户)开枪更加困难,并且降低了构建脚本对该系统造成严重破坏的可能性。因此,即使在服务器上,也要坚持使用Ubuntu 基于sudo的管理


2
he will still be able to boot the system, even if the data will be lost.-这有什么意义?如果我的数据丢失了,那我的数据就丢失了。删除后可以重新安装Linux系统软件,为什么我要关心这些目录中的数据丢失?另一方面,数据丢失~很严重。并sudo不能保护我免受此侵害。
布劳恩

2
另一个好的做法是备份重要数据。如果清除主目录,则仍可以启动,只需复制备份中的文件即可。或者,假设您有一台小型笔记本电脑供旅行。它可能有一些图片,旅行记录,火车时间表-但没有什么太关键的。如果擦除用户文件,您仍然可以启动系统并检查航班,或找出要乘坐的巴士。
Richlv

@Blauhirn备份。即使它看起来很暗淡,也有恢复的可能。
Pryftan

34

无法(到目前为止)尚未通过其他答案确定的root用户身份运行的原因之一是可追溯性。在主要是单用户计算机(台式机或笔记本电脑)的计算机上,它的影响可能较小,但是在服务器计算机上,如果某人以的身份登录root,则您不知道应该为谁的行为负责。因此,大多数具有多个系统和多个需要root特权的管理员的专业组织都要求人们使用自己的用户ID(和密码)进行登录,然后在必要时使用sudo或类似的程序以root特权进行操作。

否则,不以超级用户身份运行的主要原因是:

  • 将事故造成的损坏风险降到最低。如果您rm -fr / home/me/my-subdir以root用户身份运行,则由于(第一个)斜杠之后的空间,您已经从机器中消除了所有重要的东西-因为最先出现的东西是首先添加的东西-诸如内核之类的小东西,在/bin/etc目录。如果您输了这些,Unix会感到沮丧。

  • 最大限度地降低恶意外部站点造成损害的风险。如果以方式浏览root,则更容易受到偷渡式下载恶意材料的攻击。

我使用MacOS X的机会超过使用Ubuntu的机会,但是默认情况下,root处于禁用状态,并且仍在我的计算机上。我例行地sudo(在幕后)定期升级内核和其他类似的操作。类似的技术通常适用于Linux。

基本上,您应该只在root简短的工作期间使用功能强大的特权,以避免发生错误的风险。


1
这不是在指责某人,而是要弄清楚为什么某人做出了改变。
jippie 2012年

2
@jippie:我的意思是“责备”,就像VCS跟踪谁做了什么一样,以便将正确的人归因于更改的责任,无论是好是坏,以及执行该跟踪的命令的名称之一是“怪”。它使您可以与他人交谈,以找出发生某事的原因。它并不总是“故障”(尽管令人沮丧的是,经常需要知道的原因是因为某些事情并没有按预期工作,并且有必要知道为什么不这样)。因此,这与问责制和可追踪性有关,而不是一定要因其所作所为而责备该人。
乔纳森·莱夫勒

在Ubuntu上,类似rm -fr / home/me/my-subdir这样的命令实际上并不会尝试递归删除/,因为/对它们进行了特殊处理以防止此类错误。请参阅的文件--preserve-root,并--no-preserve-root在选项man rm的详细信息。但是原理是合理的:确实存在单字符错字,导致rm删除所有内容。例如,如果您要通过运行来删除当前目录中的所有内容rm -r *,而无意中放了一个/before *,那就不好了。
伊莱亚·卡根

@EliahKagan但是,如果您要这样做... chown -R nobody:nobody ..// etc会保护您吗?如果您要在/ etc上执行此操作,将会给您带来很多伤害。类似地是.*,当递归地运行命令。
Pryftan

21

TL; DR:仅在必要时才作为root用户执行操作。sudo使这个变得很容易。如果启用了root登录,则仍然可以遵循此规则,只需要小心即可。尽管启用root登录实际上并不一定安全,但是您无需启用root登录,因为您有sudo

这里确实有两个相关的问题。

  • 以root身份登录日常计算机(网络浏览,电子邮件,文字处理,游戏等),为什么不好?
  • 为什么Ubuntu默认默认完全禁用root登录并使用sudoand polkit使管理员能够以root用户身份运行特定命令?

为什么不一直以root用户身份运行所有内容?

其他大多数答案都涵盖了这一点。归结为:

  1. 如果您将根权限用于不需要它们的任务,而您最终却完成了原本不想做的事情,则可能会以您不希望的方式更改或损害系统。
  2. 如果你运行程序的权限时,你并不需要,而且最终做一些你并不意味着它做的事情-例如,由于安全漏洞或其他错误-它可以改变或伤害您不需要的系统。

的确,即使不以root用户身份做事,也可能造成伤害。例如,您可以删除自己的主目录中的所有文件,该目录通常包括所有文档,而无需以root用户身份运行!(希望您有备份。)

当然,作为根,还有其他方法可以意外破坏这些相同的数据。例如,您可以of=dd命令指定错误的参数,然后在文件中写入原始数据(这使它们的恢复方式比仅删除它们更困难)。

如果您是唯一使用计算机的人,那么您只能以root用户的身份进行的伤害可能不会真正超过使用常规用户特权所遭受的伤害。但是,这仍然没有理由扩大你的风险,包括附加的方式搞乱你的Ubuntu系统。

如果使用非root用户帐户运行使您无法控制自己的计算机,那么这当然是一个不好的权衡。但事实并非如此- 每当您真正希望以root身份执行某项操作时,都可以使用sudo和其他方法进行操作

为什么不可以以root用户身份登录?

以root用户身份登录的能力本质上是不安全的,这是一个神话。某些系统默认情况下启用了root帐户。其他系统sudo默认使用,有些同时配置。

  • 例如,被广泛合理地认为是世界上最安全的通用OS的OpenBSD附带启用了用于基于密码的本地登录的root帐户。
  • 其他受人尊敬的操作系统包括RHELCentOSFedora
  • DebianUbuntu源自Debian)让用户决定在系统安装过程中将配置哪种方法。

拥有一个启用了root帐户的系统,从客观上讲不是错误的,只要

  1. 您仍然只在确实需要时使用它,并且
  2. 您可以适当限制访问权限。

新手经常问如何在Ubuntu中启用root帐户。我们不应该向他们隐瞒此信息,但是通常当人们问到这时,是因为他们误以为他们需要启用root帐户。实际上,这几乎是没有必要的,因此在回答此类问题时,重要的是我们要进行解释。启用root帐户还可以轻松自满并以root身份执行不需要root特权的操作。但这并不意味着启用根帐户本身是不安全的。

sudo鼓励并帮助用户仅在需要时才以root用户身份运行命令。要以root用户身份运行命令,请键入sudo,空格,然后键入命令。这非常方便,并且许多不同技能的用户都喜欢这种方法。

简而言之,您无需启用root登录,因为您具有sudo。但是,只要您仅将它用于需要它的管理任务,就可以以root身份启用和登录,这同样安全,只要通过以下方式即可

  • 从本地,从非图形虚拟控制台
  • 使用su命令从另一个帐户登录时。

但是,如果您以以下方式以root用户身份登录,则会带来大量的附加安全风险:

  • 图形化。当您以图形方式登录时,将运行大量的东西来提供图形界面,最终您将以根用户身份运行甚至更多的应用程序,以将该界面用于任何事物。这违背了只以root身份运行真正需要root特权的程序的原则。其中一些程序可能包含错误,包括安全错误。

    此外,出于非安全原因可以避免这种情况。以图形方式登录为root并没有得到很好的支持- 正如loevborg提到的那样,桌面环境和图形应用程序的开发人员通常不会以root身份对其进行测试。即使他们这样做,以root身份登录图形桌面环境也不会获得用户的真实世界alpha和beta测试,因为几乎没有人尝试过(出于上述安全性原因)。

    如果需要以root用户身份运行特定的图形应用程序,则可以使用gksudosudo -H。与您实际使用root帐户以图形方式登录相比,作为root用户运行的程序要少得多。

  • 远程地。root帐户实际上可以执行任何操作,并且在几乎每个类Unix系统上都具有相同的名称。通过以root用户身份通过ssh或其他远程机制登录,甚至通过配置远程服务以允许它登录,您可以使入侵者(包括自动化脚本和僵尸网络上运行的恶意软件)更容易通过蛮力,字典攻击(甚至可能)获得访问权限。一些安全错误)。

    如果只允许基于密钥的根登录而不允许基于密码的根登录,则风险可能不会很高。

在Ubuntu中,默认情况下,即使启用root身份登录,也不会启用图形化root登录或通过SSH进行远程登录。也就是说,即使您启用了root登录,它仍然仅以相当安全的方式启用。

  • 如果您在Ubuntu上运行ssh服务器并且没有更改/etc/sshd/ssh_config,它将包含该行PermitRootLogin without-password。这将禁用基于密码的root登录,但允许基于密钥的登录。但是,默认情况下未配置任何密钥,因此,除非您设置了一个密钥,否则也将无法使用。此外,基于密钥的远程root登录比基于密码的远程root登录的危害要小得多,部分原因是它不会带来暴力破解和字典攻击的风险。
  • 即使默认设置可以保护您,但我认为如果要启用root帐户,检查ssh配置仍然是一个好主意。而且,如果您正在运行其他提供远程登录的服务(例如ftp),则也应进行检查。

结论:

  • 仅在需要时才以root用户身份进行操作;sudo可以帮助您做到这一点,同时仍然可以随时随地为您提供root的全部功能。
  • 如果您了解root的工作原理以及过度使用root的危险,那么从安全角度来看,启用root帐户并不是真正的问题。
  • 但是,如果您了解这一点,那么您也几乎肯定不需要启用root帐户

有关root和root的更多信息sudo,包括sudo我在此未介绍的一些其他好处,我强烈建议在Ubuntu帮助Wiki中使用RootSudo


“如果您是唯一使用计算机的人,那么您只能以root用户身份遭受的损害可能不会真正超过您以常规用户权限所遭受的损害。但这仍然没有扩大风险的理由。'更不用说它使您习惯了……然后您转到另一个系统,会发生什么?同样的荒谬想法使人们rm -i通过shell别名习惯了。您使用的系统没有该功能,那又如何呢?当您认为人类是非常习惯的动物时,让这样的错误的婴儿坐在用户那里绝不是一个好主意。
Pryftan

13

根帐户默认情况下处于禁用状态-意味着它存在但不可用(在恢复模式下除外)。这意味着攻击者知道您的root帐户,但是即使他/她具有root密码也无法使用它。因此,攻击者必须猜测具有管理员特权的用户名和该用户的密码(这比仅尝试确定root密码要困难得多)。在XP中,如果您安装了故障恢复控制台,拥有对您的盒子的物理访问权限,可以启动它(RC)-无需密码。与Ubuntu中的恢复模式相同。

在Ubuntu中,当他们说根已禁用时-真正的意思是该帐户已被锁定。通过将密码更改为与可能的加密值不匹配的值来锁定帐户。这有效地阻止了任何人都能够以root用户身份登录-因为将不可能输入密码。由于有时仍然需要root用户访问权限-Ubuntu内核已被修改为仅在单用户模式下允许root用户本地登录。

另请参阅此页面


嗯 没有冒犯,但您可能想要阅读问题的标题,然后再次阅读详细信息。
Mussnoon 2010年

3
这非常有帮助-它确实与问题有关。它涉及启用帐户的安全性,这是作为root用户运行的先决条件。
Stefano Palazzo

1
@Stefano Palazzo:尽管所提供的信息可能有用,但我真诚地看不出我需要知道的答案的哪一部分。我已经读过很多遍了。
Mussnoon 2010年

但这并不妨碍人们能够登录到root用户。
乍得

12

就像用AK47武装一个小孩一样,他可以用彩弹枪快乐地玩耍。;)

我的意思是说这是错误的,因为您和您的应用程序将拥有比他们需要的更多的特权,那就是当事情可能并且有时会出错时:(


5
一个更聪明的类比。(^_^)
kit.yang 2010年

2
这是完全不恰当的类比。携带AK47的孩子会杀死自己和其他人。具有root用户访问权限的unix用户最多只能使其系统暂时无法运行。(一个人总是可以重新安装操作系统并恢复操作)。
kbeta

@kbeta是的,我的类比有点过分夸张。请继续前进。
omeid

@kbeta这个比喻是适当的。风险不是无法运行的系统,而是数据和隐私丢失。root用户可以删除数据。请使用您的幻想来关联杀死和数据丢失。
n611x007,2016年

11

一个非常好的问题……让我从实际的角度回答:

当我10年前开始使用Linux时,主要发行版的广告使用的不是root用户,没有今天那么多。当我习惯Windows时,我也看不到使用受限用户帐户的意义。特别是因为我不得不经常输入“ su”-sudo当时并不流行。;-)所以我总是以root用户身份登录,因为我需要进行大量维护才能使我的系统正确配置。但是,请猜怎么着,任何新安装的系统很快都会变得非常不稳定。

例如,一个具体的问题:我没有为Linux保留那么多的硬盘空间,因此我碰巧几次在分区上还剩下0个字节。也许我不完全精确,因为我不知道确切的机制,但是当您使用非root帐户填充磁盘时,总是剩下几千字节。但是,如果您实际上还剩下0个字节,则系统会产生奇怪的错误,并且由于在后台运行着许多系统软件,您可能最终会遇到一些难以修复的系统损坏。

另一件事是:根目录和非根目录之间的划分使您的系统井井有条。作为root用户,您可能会尝试不干净地安装新应用程序,从而使您的系统变得肮脏,难以维护。

但这是一件好事:现代发行版可以为您执行大部分管理任务,因此您很少需要使用root帐户来摆弄Linux系统的胆量。不时输入密码就足够了,其余的则由分发者的脚本完成。

但是我怀疑如果您使用95 oder 98,您的Windows系统上是否没有问题。(至少我有问题...)因为管理员和常规用户“传统“ Windows应用程序假设他们愿意,即使没有告诉您,也可以做任何事情,例如安装间谍软件。Microsoft在发布Vista时涉及到该问题。(有效地实现了一个sudo机制。)所以人们得到了非常烦人的对话,说“你不能那样做”。对于某些不兼容Vista的软件,即使需要管理员身份,也需要一些肮脏的技巧才能安装它。


“也许我不完全精确,因为我不知道确切的机制,但是当您用非root帐户填充磁盘时,总是剩下几千字节。” 也许您指的是lost + found目录?如果是这样,您可以作为管理员指定要保留的数量。我想说的是默认默认值为5%,但我可能会记错并且可以更改。即使很少需要,它也很有用。显然这里还有更多(我使用多年以来还记得):unix.stackexchange.com/questions/18154/…–
Pryftan

显然,它不仅限于ext文件系统:unix.stackexchange.com/questions/7950/…–
Philip

是的 我知道:)但是也感谢您添加。
Pryftan

10

这种方法背后有很多方面。他们之中有一些是:

  • 根源强大。
  • 在Unix和类似Unix的系统中,系统管理特权是全部或没有。用户具有root访问权限或没有root访问权限,并且root访问权限意味着对计算机的完全控制。如果有问题的计算机被多个人使用,或者root具有访问其他系统或用户文件的权限,则为某些用户提供部分root特权是更可接受的。

  • root用户可以隐藏其所有操作。
  • sudo记录通过sudo运行的每个命令。记录sudo所做的工作有助于我们诊断各个系统/流程的问题以及常规配置问题,并帮助我们确定所需的改进。

  • root密码使您可以访问系统上的任何命令。
  • 通过其配置文件,sudo可以为用户授予特定命令集的root访问权限。这也避免了“全有或全无”的影响,使我们能够为单个用户提供对他们的计算机的更多控制权,并帮助他们摆脱常见的问题。

    这是一篇好文章:http : //cf.stanford.edu/policy/root


    但是,当您具有完整的sudo时,可以对su进行sudo su并隐藏您的操作。
    威廉·伊拉斯

    8
    rm /*
    

    可以说您一直在清理行政区域。您厌倦了密码,所以您sudo su。您只是一秒钟而分心,却忘记了CD到/。那你呢rm *。我做完了 您可以将其归还,但它是PITA。哦,它/media也是它的后代!


    10
    我们总是抱怨我们的PC速度太慢,但是好像它们已针对运行rm这样的rm进行了优化。
    jippie 2012年

    1
    @jippie因为RM只是破坏了文件的inode链接。删除链接并将空间标记为“空闲”不会花很长时间。
    卡兹·沃尔夫

    @jippie,它应具有10秒倒计时一个构建
    HopefullyHelpful

    7

    为什么没有root登录?

    虽然您可以为超级用户帐户创建一个密码,使您可以以root用户身份登录,但值得一提的是,这不是“ Ubuntu”的处理方式。Ubuntu 出于某种原因特别选择了默认情况下提供root登录名和密码。而是使用默认的Ubuntu安装sudo

    Sudo是为人们提供超级用户密码以执行超级用户职责的替代方法。在默认的Ubuntu安装中,默认情况下,将为安装OS的人员授予“ sudo”权限。

    具有“ sudo”许可权的任何人都可以通过sudo在命令之前附加“超级用户”的身份来执行某些操作。例如,要apt-get dist-upgrade以超级用户身份运行,可以使用:

    sudo apt-get dist-upgrade
    

    sudo方法的好处

    • 使用sudo,您可以预先选择哪些用户具有sudo访问权限。由于他们使用自己的密码,因此无需记住根密码。

    • 如果您有多个用户,则只需删除超级用户的sudo权限即可撤销其超级用户访问权限,而无需更改root密码并通知所有人新密码。

    • 您甚至可以选择允许用户使用sudo执行哪些命令,以及禁止该用户使用哪些命令。

    • 最后,如果存在安全漏洞,则在某些情况下可以留下更好的审核记录,以显示哪个用户帐户遭到了破坏。

    使用Sudo可以更轻松地使用超级用户权限执行单个命令。使用root登录名,您将永久保留在超级用户外壳程序中,必须使用exit或退出该外壳程序logout。这可能导致人们在超级用户外壳程序中停留的时间比必要的时间长,这是因为它比注销然后再登录更方便。

    使用sudo,您仍然可以选择使用以下命令打开永久(交互)超级用户外壳程序:

    sudo su
    

    ...,并且仍然可以在没有任何root密码的情况下完成此操作,因为sudo它为该su命令赋予了超级用户特权。

    同样,su -您可以使用sudo su -甚至来代替登录shell sudo -i

    但是,这样做时,您只需要知道您正在充当每个命令的超级用户即可。这是一个很好的安全性原则,不要以超级用户身份停留超过必要的时间,而只是为了减少意外损坏系统的可能性(如果没有,则只能破坏用户拥有的文件)。

    为了澄清起见,如果您愿意,可以选择为根用户提供一个密码,该密码允许以root用户身份登录。我只是想让您了解Ubuntu的首选惯例,sudo并尝试解释一些Ubuntu偏爱默认方法的原因。

    为什么不允许通过SSH进行root登录?

    即使您的root用户确实具有允许您以root用户身份登录的密码,从外部(例如在SSH中)禁用直接root用户登录仍然是一种很好的安全措施。用户必须在初次登录时su -sudo之后进行登录是合理的。

    潜在的好处主要与安全性有关:

    • 它通过消除远程暴力破解根密码的可能性来降低攻击向量。互联网上的服务器通常会因尝试通过SSH暴力破解根密码而不断受到攻击。

    • 它创建了更好的审核跟踪,因此,即使在发生攻击的情况下,攻击者稍后确实获得了超级用户特权,您也可以看到使用了谁的用户帐户来获取访问权限。


    6

    以root用户身份登录后,应用程序,脚本或命令行命令可以访问可能损坏系统的软件敏感部分。这可能是用户或程序员经验不足或由于恶意的隐藏代码导致的。


    5

    当以root用户身份运行时,太容易搞砸了。您可以像一个命令一样破坏整个系统...


    5

    我可以补充一点,Windows中的Administrator和Unix中的root之间是有区别的。管理员在根没有任何限制的系统中仍然有一些限制。Windows中根的正确模拟是系统用户。

    在根/系统下使用PC的坏事是,您可能无意间破坏了任何内容而没有OS发出任何警告。


    3

    拒绝使用root的原因:

    • 可能会意外破坏系统文件
    • 可能感染
    • 不记录动作

    使用root的原因:

    • 可以访问所有内容,无需输入密码
    • GUI,不使用用于管理系统文件/目录的终端

    在我看来,非root帐户仍然可能成为那些反对使用root的原因的受害者,它最多添加的是对您操作的确认。我认为,只要您知道自己在做什么,使用root绝对是安全的。在那里,我说了。


    尽管从技术上讲,有一种方法可以记录包括每个命令在内的操作。这适用于每个用户。请参阅过程记帐,例如:linuxjournal.com/article/6144而且,只有当您需要root 权限时,它才是真正安全的。否则,即使命令应该是安全的,也不是完全安全的(利用等)。
    Pryftan

    3

    如果应用程序以root身份运行,则不能保证它们都不执行

    rm -rf /
    

    (这是应的命令的例子运行。)


    @StefanoPalazzo删除命令后,该帖子没有任何意义,因此,我已回滚您的编辑-您也可能删除了该帖子。请注意,与普遍的误解相反,该命令在编写时未实际上在Ubuntu系统上运行时删除文件,但与执行该命令的命令类似。因此,如果您担心有人会意外地复制命令并破坏他们的系统,那是不可能的。有关详细信息,请参见中的--preserve-root--no-preserve-root选项的文档man rm
    伊利亚·卡根

    Solaris根据广泛的POSIX解释(和Bryan Cantrill)将此命令视为未定义的行为,并引发错误
    Jeremy Hajek,

    3

    对于一个知识渊博且谨慎的用户,我不确定是否存在正确的答案。我没有看到这个答案,所以我以为可以报名参加。

    我不喜欢的是我以后需要在多用户系统上无意更改权限chmod。事后通过chmod进行修复比需要sudo更为烦人,但这取决于我的计划。


    3

    如果谨慎使用,以root用户身份登录不会有危险。

    尽管我认为禁用root是更可取的解决方案,因为攻击者无法对其进行暴力破解。

    一种解决方案是在名称不明的sudo组中创建用户,例如,gamer并使用sudo执行管理任务。

    因此,攻击者不仅必须猜测该管理用户的密码,还必须猜测其登录名。如果使用sudo的用户具有类似kitty或之类的登录名,这并不明显gamer


    2

    软件基于共享库,依赖项,配置文件等。
    大多数情况下,在应用程序中单击即可调用多个更改的“链式反应”,而不仅仅是您认为可能的位置。
    当这些更改将影响系统关键设置时,对您(作为用户)来说很重要。
    这就是为什么root访问是一个很好的安全模型的原因:
    如果系统将要发生重要的事情,系统将要求您特权提升来通知您。


    1

    这是一个有两个以上问题的答案。

    对于某些现实情况,请检查与此相同但却如此可怕的答案:

    desktop installations

    • 使用您自己的用户并在需要时使用sudo,否则使用一个成功使用的攻击媒介,因为您实际上不知道自己在做什么,并且系统已受到威胁
    • 在较大的公司中,即使您是管理员,您甚至可能甚至没有在自己的工作站上拥有root特权的权限,具体取决于所使用的锡纸帽子的数量。

    server installations

    • 以root身份进行短暂的工作会话(假设您具有无密码登录名,对所有服务器进行正确的ssh密钥管理-并且无论如何都为所有密码登录配置了fail2ban)之间以及与每个守护程序/服务之间存在巨大差异与自己的用户一起运行(这是必须的)-大多数人似乎没有意识到区别
    • 娱乐:尝试仅在没有root用户访问权限的情况下,使用版本控制的配置管理工具(ansible / puppet / salt /与git服务器中的文件一起使用)。(对于这些特殊系统以及监视和备份系统,您确实具有某种形式的AAA,不是吗?)
    • 还:默认rm -rf /在大多数主流发行版IIRC中均不起作用
    • 任何严重的工作场所都具有用于访问服务器群的Jumphost /堡垒主机,该服务器群记录了您无论如何所做的任何事情,这可能会受到2FA的进一步保护
    • 如果您具有sudo且没有Jumphost,则可以修复主机日志以使其结束,但是无论如何都希望它们(如果它们不是实时镜像的)。
    • 如果还没有清除网络监视系统,那么即使同时也“清除”了ssh日志,也无法证明您已经在主机上

    对于介于这两个极端之间的任何公司规模(阅读:最有可能使用静态ip的SOHO),缺乏适当的监视/备份/自动化/日志记录措施,在服务器上强制使用sudo可能会很有用。(sudo su -在连接后很快被执行ASAP 的人所规避,即使登录时有多个root用户,即使没有恶意,也让您记录所有发生的事情的意图都白白浪费了。违反规则的措施。生活总能找到方法。

    但是,如果您至少没有fail2ban来保护密码登录(如果有的话,尤其是在面向Internet的系统上),那么请注意正确的密码处理(密码管理工具,保留策略,没有主密码,并由员工来处理)波动...),并对服务器机群进行某种形式的适当更新管理,以便定期对所有服务器进行修补,无论是从内部还是从外部,总有一天您可能会遭到黑客攻击。

    sudo在所有情况下,始终虔诚地使用并在所有人中强制使用它不会改变您拥有大量财产的可能性。


    最后是一个真实且与众不同的答案,而不是通常的“从不这样做”的口头禅。+1,谢谢你。
    Andreas H.

    0

    最终,以root身份运行不会有任何危害。只是一群偏执的人认为重新安装操作系统是不可能的。“有人可能会破坏程序..”参数,那又如何呢?如果他们这样做,那么他们已经可以输入您的密码,或者无论如何只是显示一个root密码请求,并请您提供密码。因为选择了/中的所有内容并删除了,您的系统就被炸毁了?好的,退出安装程序并重新安装。花费不到20分钟的时间,喝杯咖啡放松一下。根很好,只要记得,我就一直在运行根,您知道它能做什么吗?它使安装软件包的工作不再那么麻烦。您不必像通常那样每5分钟输入一次root密码。尝试保存/编辑系统配置文件不会遇到问题,因为它们 仅重root权限。以root身份运行更容易,更好。

    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.