我经常在论坛或其他网站上看到过很多帖子,您在这里看到人们在开玩笑以root身份运行/登录,好像这很糟糕,每个人都应该知道。但是,有关此事的搜索没有太多发现。
这可能是Linux专家广为人知的,但我真的不知道为什么。我记得几年前第一次尝试Linux(Redhat和Mandrake)时始终以root用户身份运行,因此不记得遇到任何问题。
实际上,有些发行版的背景为鲜红色,并带有警告标志,作为根用户(SuSe?)的墙纸。我仍然在Windows安装中经常使用“管理员”帐户,也从未遇到任何问题。
我经常在论坛或其他网站上看到过很多帖子,您在这里看到人们在开玩笑以root身份运行/登录,好像这很糟糕,每个人都应该知道。但是,有关此事的搜索没有太多发现。
这可能是Linux专家广为人知的,但我真的不知道为什么。我记得几年前第一次尝试Linux(Redhat和Mandrake)时始终以root用户身份运行,因此不记得遇到任何问题。
实际上,有些发行版的背景为鲜红色,并带有警告标志,作为根用户(SuSe?)的墙纸。我仍然在Windows安装中经常使用“管理员”帐户,也从未遇到任何问题。
Answers:
它破坏了已经存在多年的安全模型。应用程序本应以非管理安全性运行(或作为普通应用程序运行),因此您必须提升其特权才能修改基础系统。例如,您不希望/usr
由于错误而最近崩溃的Rhythmbox破坏整个目录。或刚刚在ProFTPD中发布的漏洞,它使攻击者可以获得ROOT Shell。
在任何操作系统上,最好的做法是在用户级别上运行应用程序并将管理任务留给根用户,并且仅根据需要。
rm -rf tmp/tests/*
...
sudo
在Linux中输入每第二个命令的密码和密码。Linux用户不是应该很懒吗?????
一句话:安全。
以root身份运行是不好的,因为:
sudo -i
成为root用户。是否想使用管道运行一些命令?然后使用sudo sh -c "comand1 | command2"
。之所以无法找到关于它的坏处的信息,是因为,好吧,互联网上的数据太多了:),并且长期以来一直在使用Linux的许多人都像您一样。这种关于root帐户的思考方式是相当新的(也许是十年?),许多人仍然因必须使用sudo而感到烦恼。特别是如果他们在服务器上工作,这意味着他们打算进行系统更改。大多数系统管理员可能是从以前的不良经验和安全标准中汲取经验的,但是他们仍然不喜欢它:)。
这是一个很好的问题。我认为答案会有所不同,具体取决于您是在谈论服务器还是台式机安装。
在台式机上,很少使用该root
帐户。实际上,Ubuntu附带禁用了根访问权限。所有需要超级用户特权的更改都通过完成sudo
,其图形识别为gksudo
和kdesudo
。鉴于设置root
密码很容易,为什么人们不这样做呢?
原因之一是它为您提供了额外的安全性。如果您按原样运行程序root
并且利用了安全漏洞,则攻击者可以访问所有数据并可以直接控制硬件。例如,它可能会在您的内核中安装木马或键盘记录程序。但是,实际上,即使没有超级用户特权,攻击也可能造成大量损失。毕竟,无需root用户访问权限即可访问所有用户数据(包括文档和存储的密码)。
在单用户系统上,更有效的一点是可以防止用户意外使系统无法使用。如果用户无意中发出了删除所有文件的命令,即使数据丢失,他们仍将能够引导系统。
此外,当今大多数面向用户(X11)的应用程序均基于以下假设:它们以常规用户帐户运行且没有管理员权限。因此,当以.NET运行时,某些程序可能会出现异常root
。
在仅具有非图形外壳程序访问权限的多用户系统上,许多这些原因都不适用。但是,Ubuntu仍然合理地默认为无法访问的root
帐户。一方面,sudo
通过安全漏洞获得对具有权限的用户帐户的访问与对的访问之间存在真正的区别root
,因为在第一种情况下,破坏其他用户将需要运行,sudo
并且仍然会提示输入帐户密码作为密码。额外的安全步骤。另外,从用户帐户执行许多管理任务并仅sudo
在绝对需要超级用户特权时调用才很有用。因此,从源代码安装程序时,建议构建源代码-运行configure
并make
-在用户目录中,仅sudo make install
在最后一步中使用。再次,这使自己(和多用户系统的其他用户)开枪更加困难,并且降低了构建脚本对该系统造成严重破坏的可能性。因此,即使在服务器上,也要坚持使用Ubuntu 基于sudo的管理。
he will still be able to boot the system, even if the data will be lost.
-这有什么意义?如果我的数据丢失了,那我的数据就丢失了。删除后可以重新安装Linux系统软件,为什么我要关心这些目录中的数据丢失?另一方面,数据丢失~
很严重。并sudo
不能保护我免受此侵害。
无法(到目前为止)尚未通过其他答案确定的root用户身份运行的原因之一是可追溯性。在主要是单用户计算机(台式机或笔记本电脑)的计算机上,它的影响可能较小,但是在服务器计算机上,如果某人以的身份登录root
,则您不知道应该为谁的行为负责。因此,大多数具有多个系统和多个需要root
特权的管理员的专业组织都要求人们使用自己的用户ID(和密码)进行登录,然后在必要时使用sudo
或类似的程序以root
特权进行操作。
否则,不以超级用户身份运行的主要原因是:
将事故造成的损坏风险降到最低。如果您rm -fr / home/me/my-subdir
以root用户身份运行,则由于(第一个)斜杠之后的空间,您已经从机器中消除了所有重要的东西-因为最先出现的东西是首先添加的东西-诸如内核之类的小东西,在/bin
和/etc
目录。如果您输了这些,Unix会感到沮丧。
最大限度地降低恶意外部站点造成损害的风险。如果以方式浏览root
,则更容易受到偷渡式下载恶意材料的攻击。
我使用MacOS X的机会超过使用Ubuntu的机会,但是默认情况下,root处于禁用状态,并且仍在我的计算机上。我例行地sudo
(在幕后)定期升级内核和其他类似的操作。类似的技术通常适用于Linux。
基本上,您应该只在root
简短的工作期间使用功能强大的特权,以避免发生错误的风险。
chown -R nobody:nobody ../
/ etc会保护您吗?如果您要在/ etc上执行此操作,将会给您带来很多伤害。类似地是.*
,当递归地运行命令。
TL; DR:仅在必要时才作为root用户执行操作。sudo
使这个变得很容易。如果启用了root登录,则仍然可以遵循此规则,只需要小心即可。尽管启用root登录实际上并不一定安全,但是您无需启用root登录,因为您有sudo
。
这里确实有两个相关的问题。
sudo
and polkit使管理员能够以root用户身份运行特定命令?其他大多数答案都涵盖了这一点。归结为:
的确,即使不以root用户身份做事,也可能造成伤害。例如,您可以删除自己的主目录中的所有文件,该目录通常包括所有文档,而无需以root用户身份运行!(希望您有备份。)
当然,作为根,还有其他方法可以意外破坏这些相同的数据。例如,您可以of=
为dd
命令指定错误的参数,然后在文件中写入原始数据(这使它们的恢复方式比仅删除它们更困难)。
如果您是唯一使用计算机的人,那么您只能以root用户的身份进行的伤害可能不会真正超过使用常规用户特权所遭受的伤害。但是,这仍然没有理由扩大你的风险,包括附加的方式搞乱你的Ubuntu系统。
如果使用非root用户帐户运行使您无法控制自己的计算机,那么这当然是一个不好的权衡。但事实并非如此- 每当您真正希望以root身份执行某项操作时,都可以使用sudo
和其他方法进行操作。
以root用户身份登录的能力本质上是不安全的,这是一个神话。某些系统默认情况下启用了root帐户。其他系统sudo
默认使用,有些同时配置。
拥有一个启用了root帐户的系统,从客观上讲不是错误的,只要
新手经常问如何在Ubuntu中启用root帐户。我们不应该向他们隐瞒此信息,但是通常当人们问到这时,是因为他们误以为他们需要启用root帐户。实际上,这几乎是没有必要的,因此在回答此类问题时,重要的是我们要进行解释。启用root帐户还可以轻松自满并以root身份执行不需要root特权的操作。但这并不意味着启用根帐户本身是不安全的。
sudo
鼓励并帮助用户仅在需要时才以root用户身份运行命令。要以root用户身份运行命令,请键入sudo
,空格,然后键入命令。这非常方便,并且许多不同技能的用户都喜欢这种方法。
简而言之,您无需启用root登录,因为您具有sudo
。但是,只要您仅将它用于需要它的管理任务,就可以以root身份启用和登录,这同样安全,只要通过以下方式即可:
但是,如果您以以下方式以root用户身份登录,则会带来大量的附加安全风险:
图形化。当您以图形方式登录时,将运行大量的东西来提供图形界面,最终您将以根用户身份运行甚至更多的应用程序,以将该界面用于任何事物。这违背了只以root身份运行真正需要root特权的程序的原则。其中一些程序可能包含错误,包括安全错误。
此外,出于非安全原因可以避免这种情况。以图形方式登录为root并没有得到很好的支持- 正如loevborg提到的那样,桌面环境和图形应用程序的开发人员通常不会以root身份对其进行测试。即使他们这样做,以root身份登录图形桌面环境也不会获得用户的真实世界alpha和beta测试,因为几乎没有人尝试过(出于上述安全性原因)。
如果需要以root用户身份运行特定的图形应用程序,则可以使用gksudo
或sudo -H
。与您实际使用root帐户以图形方式登录相比,作为root用户运行的程序要少得多。
远程地。该root
帐户实际上可以执行任何操作,并且在几乎每个类Unix系统上都具有相同的名称。通过以root用户身份通过ssh
或其他远程机制登录,甚至通过配置远程服务以允许它登录,您可以使入侵者(包括自动化脚本和僵尸网络上运行的恶意软件)更容易通过蛮力,字典攻击(甚至可能)获得访问权限。一些安全错误)。
如果只允许基于密钥的根登录而不允许基于密码的根登录,则风险可能不会很高。
在Ubuntu中,默认情况下,即使启用root身份登录,也不会启用图形化root登录或通过SSH进行远程登录。也就是说,即使您启用了root登录,它仍然仅以相当安全的方式启用。
/etc/sshd/ssh_config
,它将包含该行PermitRootLogin without-password
。这将禁用基于密码的root登录,但允许基于密钥的登录。但是,默认情况下未配置任何密钥,因此,除非您设置了一个密钥,否则也将无法使用。此外,基于密钥的远程root登录比基于密码的远程root登录的危害要小得多,部分原因是它不会带来暴力破解和字典攻击的风险。结论:
sudo
可以帮助您做到这一点,同时仍然可以随时随地为您提供root的全部功能。有关root和root的更多信息sudo
,包括sudo
我在此未介绍的一些其他好处,我强烈建议在Ubuntu帮助Wiki中使用RootSudo。
rm -i
通过shell别名习惯了。您使用的系统没有该功能,那又如何呢?当您认为人类是非常习惯的动物时,让这样的错误的婴儿坐在用户那里绝不是一个好主意。
根帐户默认情况下处于禁用状态-意味着它存在但不可用(在恢复模式下除外)。这意味着攻击者知道您的root帐户,但是即使他/她具有root密码也无法使用它。因此,攻击者必须猜测具有管理员特权的用户名和该用户的密码(这比仅尝试确定root密码要困难得多)。在XP中,如果您安装了故障恢复控制台,拥有对您的盒子的物理访问权限,可以启动它(RC)-无需密码。与Ubuntu中的恢复模式相同。
在Ubuntu中,当他们说根已禁用时-真正的意思是该帐户已被锁定。通过将密码更改为与可能的加密值不匹配的值来锁定帐户。这有效地阻止了任何人都能够以root用户身份登录-因为将不可能输入密码。由于有时仍然需要root用户访问权限-Ubuntu内核已被修改为仅在单用户模式下允许root用户本地登录。
另请参阅此页面
就像用AK47武装一个小孩一样,他可以用彩弹枪快乐地玩耍。;)
我的意思是说这是错误的,因为您和您的应用程序将拥有比他们需要的更多的特权,那就是当事情可能并且有时会出错时:(
一个非常好的问题……让我从实际的角度回答:
当我10年前开始使用Linux时,主要发行版的广告使用的不是root用户,没有今天那么多。当我习惯Windows时,我也看不到使用受限用户帐户的意义。特别是因为我不得不经常输入“ su”-sudo当时并不流行。;-)所以我总是以root用户身份登录,因为我需要进行大量维护才能使我的系统正确配置。但是,请猜怎么着,任何新安装的系统很快都会变得非常不稳定。
例如,一个具体的问题:我没有为Linux保留那么多的硬盘空间,因此我碰巧几次在分区上还剩下0个字节。也许我不完全精确,因为我不知道确切的机制,但是当您使用非root帐户填充磁盘时,总是剩下几千字节。但是,如果您实际上还剩下0个字节,则系统会产生奇怪的错误,并且由于在后台运行着许多系统软件,您可能最终会遇到一些难以修复的系统损坏。
另一件事是:根目录和非根目录之间的划分使您的系统井井有条。作为root用户,您可能会尝试不干净地安装新应用程序,从而使您的系统变得肮脏,难以维护。
但这是一件好事:现代发行版可以为您执行大部分管理任务,因此您很少需要使用root帐户来摆弄Linux系统的胆量。不时输入密码就足够了,其余的则由分发者的脚本完成。
但是我怀疑如果您使用95 oder 98,您的Windows系统上是否没有问题。(至少我有问题...)因为管理员和常规用户“传统“ Windows应用程序假设他们愿意,即使没有告诉您,也可以做任何事情,例如安装间谍软件。Microsoft在发布Vista时涉及到该问题。(有效地实现了一个sudo机制。)所以人们得到了非常烦人的对话,说“你不能那样做”。对于某些不兼容Vista的软件,即使需要管理员身份,也需要一些肮脏的技巧才能安装它。
这种方法背后有很多方面。他们之中有一些是:
这是一篇好文章:http : //cf.stanford.edu/policy/root
rm /*
可以说您一直在清理行政区域。您厌倦了密码,所以您sudo su
。您只是一秒钟而分心,却忘记了CD到/
。那你呢rm *
。我做完了 您可以将其归还,但它是PITA。哦,它/media
也是它的后代!
虽然您可以为超级用户帐户创建一个密码,使您可以以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暴力破解根密码而不断受到攻击。
它创建了更好的审核跟踪,因此,即使在发生攻击的情况下,攻击者稍后确实获得了超级用户特权,您也可以看到使用了谁的用户帐户来获取访问权限。
当以root用户身份运行时,太容易搞砸了。您可以像一个命令一样破坏整个系统...
拒绝使用root的原因:
使用root的原因:
在我看来,非root帐户仍然可能成为那些反对使用root的原因的受害者,它最多添加的是对您操作的确认。我认为,只要您知道自己在做什么,使用root绝对是安全的。在那里,我说了。
如果应用程序以root身份运行,则不能保证它们都不执行
rm -rf /
(这是应的命令的例子不运行。)
这是一个有两个以上问题的答案。
对于某些现实情况,请检查与此相同但却如此可怕的答案:
desktop installations
:
server installations
:
rm -rf /
在大多数主流发行版IIRC中均不起作用对于介于这两个极端之间的任何公司规模(阅读:最有可能使用静态ip的SOHO),缺乏适当的监视/备份/自动化/日志记录措施,在服务器上强制使用sudo可能会很有用。(sudo su -
在连接后很快被执行ASAP 的人所规避,即使登录时有多个root用户,即使没有恶意,也让您记录所有发生的事情的意图都白白浪费了。违反规则的措施。生活总能找到方法。
但是,如果您至少没有fail2ban来保护密码登录(如果有的话,尤其是在面向Internet的系统上),那么请注意正确的密码处理(密码管理工具,保留策略,没有主密码,并由员工来处理)波动...),并对服务器机群进行某种形式的适当更新管理,以便定期对所有服务器进行修补,无论是从内部还是从外部,总有一天您可能会遭到黑客攻击。
sudo
在所有情况下,始终虔诚地使用并在所有人中强制使用它不会改变您拥有大量财产的可能性。
最终,以root身份运行不会有任何危害。只是一群偏执的人认为重新安装操作系统是不可能的。“有人可能会破坏程序..”参数,那又如何呢?如果他们这样做,那么他们已经可以输入您的密码,或者无论如何只是显示一个root密码请求,并请您提供密码。因为选择了/中的所有内容并删除了,您的系统就被炸毁了?好的,退出安装程序并重新安装。花费不到20分钟的时间,喝杯咖啡放松一下。根很好,只要记得,我就一直在运行根,您知道它能做什么吗?它使安装软件包的工作不再那么麻烦。您不必像通常那样每5分钟输入一次root密码。尝试保存/编辑系统配置文件不会遇到问题,因为它们 仅重root权限。以root身份运行更容易,更好。