Linux专家可能已经广为人知,但是我真的不知道为什么。我记得几年前第一次尝试Linux(Redhat和Mandrake)时始终以root用户身份运行,因此不记得遇到任何问题。
实际上,有些发行版具有鲜红色的背景,并在其上遍布警报符号,作为root用户(SuSe?)的墙纸。我仍然在Windows安装中定期使用“管理员”帐户,并且也从未遇到任何问题。
#1 楼
它破坏了已经存在多年的安全模型。应用程序本应以非管理安全性运行(或仅作为凡人),因此您必须提升其特权才能修改基础系统。例如,您不希望由于错误导致Rhythmbox近期崩溃使您的整个/usr
目录消失。或刚刚在ProFTPD中发布的漏洞,它使攻击者可以获得ROOT Shell。 在任何操作系统上,只有在需要时才在用户级别运行应用程序并将管理任务留给root用户是一种好习惯。
评论
...并且可以保护您免受灾难中琐碎错误的影响。自1990年以来,我一直是Unix用户/ adm,但我仍然可以肯定地在rm -rf tmp / tests / *的正确错误位置插入空格。
–罗马诺
2014年1月20日在22:50
1.)大多数人会认为自己的主目录比root目录更重要,因为前者无法重新安装。所以我看不出你的意思。 2.)就安全性而言,您是对的。但是,从Windows(到处都是恶意软件),自从我就一直使用管理员帐户(和许多人一样)开始,我很难考虑到这是真正的危险。我懒得在Linux中为第二个命令键入sudo和密码。 Linux用户不是应该很懒吗?????
– phil294
16 Mar 9 '16 at 0:46
不同意-_-:〜:|
– Edgy1
16-09-25在2:48
@LazyPower感谢您编辑答案,但现在我不明白了。要修改我的私有Ubuntu〜文件夹,程序不需要sudo权限。 Rhythmbox可以清除我的整个$ HOME / Music目录!这就是我所关心的!这与root权限有何关系?
– phil294
17年4月4日在4:59
@Blauhirn真是个好电话。我只是发送了一个后续编辑以反映我们不希望它删除/ usr的全部。在保护$ HOME文件夹方面,没有什么比一个好的备份对您有帮助。我认为这种特殊情况不会像安全做法那样与安全性相关。再次感谢您的标注。
– lazyPower
17年6月12日在16:30
#2 楼
只需一个词:安全。您以root用户身份登录=所有应用程序都以root特权运行-Firefox,Flash,OpenOffice等中的每个漏洞现在都可以破坏您的系统,因为现在可能的病毒无处不在。是的,Ubuntu / Linux的病毒很少,但这也归因于良好的安全性和默认的非特权用户。
不仅与病毒有关-应用程序中的小错误可能会擦除某些系统文件或... br />以root用户身份登录后,您可以执行所有操作-系统不会询问您!您要格式化该磁盘吗?好吧,只需单击一下就可以完成,因为您是root用户,并且知道自己在做什么...
评论
数据文件全部归我的用户帐户所有,对我来说比系统文件有价值。以用户身份登录时,上述所有示例仍然存在问题,除了可以轻松替换的系统文件得到保护之外。
– kbeta
13年4月29日在21:02
@kbeta假设您正在计算机上运行,其中唯一贵重物品是数据和系统文件。实际上,Linux通常用在有许多用户同时使用系统的系统中。在这种情况下,系统(以及因此的系统文件)的稳定性就更重要了,其他用户文件也很重要。
–埃里克·保利(Eric Pauley)
17-2-28在15:11
@kbeta足够公平,但是系统配置受损也可能会对您的数据造成威胁……当然,最好进行备份,以了解您的系统当前是否处于危险之中。使用灾难恢复计划工作当前的备份会更好。
–Pryftan
18年2月21日在20:14
所以这意味着应用程序永远都不能以这种方式启动? :sudo myApp.py,因为它与从根目录清除它一样?
–艾尔多萨
20-2-24在12:28
#3 楼
以root身份运行是不好的,因为:愚蠢:没有什么可以阻止您做愚蠢的事情。如果您尝试以任何可能有害的方式更改系统,则需要执行sudo,这几乎可以保证在输入密码时暂停,以使您意识到您将要进行可能的大/昂贵更改。
安全性:在这个问题中已经提到过很多次了,但是基本上是同一回事,如果您不知道管理员用户的登录帐户,就很难破解。 root意味着您已经拥有工作凭证集的一半。 sudo过期几次后,您需要做的只是
sudo -i
,而您现在是root用户。是否想使用管道运行一些命令?然后使用sudo sh -c "comand1 | command2"
。您始终可以在故障恢复控制台中使用它:故障恢复控制台可让您尝试从做一些愚蠢的事情或解决由应用程序引起的问题(仍然需要运行)中恢复as sudo :))在这种情况下,Ubuntu没有root帐户的密码,但是您可以在线搜索更改该密码,这将使任何对您的盒子具有物理访问权限的人都很难受到伤害。 br />
之所以找不到关于它的坏处的信息,是因为,好吧,互联网上的数据太多了:),并且许多人长期使用Linux时间想像你一样。这种关于root帐户的思考方式是相当新的(也许是十年?),许多人仍然因必须使用sudo而感到烦恼。特别是如果他们在服务器上工作,这意味着他们打算进行系统更改。大多数系统管理员可能是从以前的不良经验和安全标准中汲取经验的,但是他们仍然不喜欢它:)。
评论
“也许十年?”甚至比您撰写本文时要长得多。即使没有sudo也有su不用说,例如车轮组(例如)。特权分离始终很重要,而且一直很重要,而且永远很重要。与许多年前相比,Otoh使用基于Unix的操作系统的人并不多,许多这样做的人一直都是管理员。
–Pryftan
18年2月21日在20:44
#4 楼
这是一个很好的问题。我认为答案是稍有不同,具体取决于您是在谈论服务器还是台式机安装。在台式机上,使用
root
帐户并不常见。实际上,Ubuntu附带禁用了根访问权限。所有需要超级用户特权的更改都通过sudo
及其图形标识gksudo
和kdesudo
完成。但是,鉴于设置root
密码很容易,为什么人们不这样做呢?原因之一是它为您提供了额外的安全保护。如果您以
root
的身份运行程序,并且利用了安全漏洞,则攻击者可以访问所有数据,并且可以直接控制硬件。例如,它可能会在您的内核中安装木马或键盘记录程序。但是,实际上,即使没有超级用户特权,攻击也可能造成大量损失。毕竟,所有用户数据(包括文档和存储的密码)都可以在没有root用户访问的情况下进行访问。无法使用。如果用户无意中发出了删除所有文件的命令,即使丢失了数据,他们仍将能够引导系统。假设它们以常规用户帐户运行且没有管理员权限。因此,当以root
运行时,某些程序可能无法正常运行。在仅具有非图形外壳程序访问权限的多用户系统上,许多这些原因都不适用。但是,Ubuntu仍然合理地默认为无法访问的
root
帐户。一方面,通过安全漏洞获得对具有sudo
权限的用户帐户的访问权与对root
的访问权之间存在真正的区别,因为在第一种情况下,破坏其他用户将需要运行sudo
,并且仍然会提示输入该帐户密码作为附加的安全步骤。另外,从用户帐户执行许多管理任务并仅在绝对需要超级用户特权时才调用sudo
很有用。因此,从源代码安装程序时,建议在用户目录中构建源代码-运行configure
和make
-在最后一步中仅使用sudo make install
。再次,这使自己(和多用户系统的其他用户)开枪更加困难,并且降低了构建脚本对该系统造成严重破坏的可能性。因此,即使在服务器上,也要坚持Ubuntu的基于sudo的管理。评论
即使数据丢失,他仍将能够引导系统。 -这有什么意义?如果我的数据丢失了,那我的数据就丢失了。删除后可以重新安装Linux系统软件,为什么我要关心这些目录中的数据丢失?另一方面,〜中的数据丢失很严重。 sudo并不能保护我免受此侵害。
– phil294
16 Mar 9 '16 at 0:52
另一个好的做法是备份重要数据。如果清除主目录,则仍可以启动,只需复制备份中的文件即可。或者,假设您有一台小型笔记本电脑供旅行。它可能有一些图片,旅行记录,火车时间表-但没有什么太关键的。如果擦除用户文件,您仍然可以启动系统并检查航班或找出要乘坐的巴士。
– Richrich
18年1月7日,0:21
@Blauhirn备份。即使它看起来很暗淡,也有恢复的可能。
–Pryftan
18年2月21日在20:15
#5 楼
到目前为止(尚未)由其他答案确定的不以root用户身份运行的原因之一是可追溯性。在主要是单用户计算机(台式机或笔记本电脑)的计算机上,这可能不太重要,但是在服务器计算机上,如果有人以root
身份登录,则您不知道应该为谁的行为负责。因此,大多数具有多个系统和多个管理员且需要root
特权的专业组织要求人们使用自己的用户ID(和密码)登录,然后在必要时使用sudo
或类似程序使用root
特权进行操作。 />否则,不以root用户身份运行的主要原因是:将事故造成的损坏风险降到最低。如果您以root用户身份运行
rm -fr / home/me/my-subdir
,则由于(第一个)斜杠之后的空间,您已经从机器中消除了所有重要的东西-因为最先出现的东西是首先添加的东西-诸如内核之类的小东西,/bin
和/etc
目录。如果您丢失了Unix,Unix会感到不高兴。将恶意外部站点造成的损坏风险降到最低。如果以
root
进行浏览,则更容易受到恶意下载的偷渡。我使用MacOS X的频率要比使用Ubuntu的频率高,但是默认情况下,root处于禁用状态,并且仍然在我的机器上。我例行使用幕后程序
sudo
例行升级内核和其他类似操作。类似的技术通常适用于Linux。基本上,您只应在简短的工作时间内使用
root
的所有强大特权,以避免发生错误的风险。评论
这不是在指责某人,而是要弄清楚为什么某人做出了改变。
–吉比
2012年4月17日在21:18
@jippie:我的意思是“责备”,就像VCS跟踪谁做了什么一样,以便正确的人被归功于变更的责任,无论是好是坏,以及执行该追踪的命令的名称之一是“怪”。它使您可以与他人交谈,以找出发生某事的原因。它并不总是“故障”(尽管令人沮丧的是,经常需要知道的原因是因为某些事情并没有按预期工作,并且有必要知道为什么不这样)。因此,这与问责制和可追踪性有关,而不是一定要因其所作所为而责备该人。
–乔纳森·莱弗勒(Jonathan Leffler)
2012年4月17日在21:44
在Ubuntu上,诸如rm -fr / home / me / my-subdir之类的命令实际上不会尝试递归删除/,因为对/进行了特殊处理以防止此类错误。有关详细信息,请参见手册中的--preserve-root和--no-preserve-root选项的文档。但是原理是合理的:确实存在单字符错字,导致rm删除所有内容。例如,如果您要通过运行rm -r *删除当前目录中的所有内容,但是不小心在*前面加上了/,那将是不好的。
– Eliah Kagan
2015年5月3日17:18
@EliahKagan但是,如果您要这样做... chown -R none:nobody ../可以说/ etc会保护您吗?如果您要在/ etc上执行此操作,将会给您带来很多伤害。递归运行命令时,。*同样。
–Pryftan
18年2月21日在20:48
#6 楼
TL; DR:仅在必要时才作为root用户执行操作。sudo
使这个过程非常容易。如果启用了root登录,则仍然可以遵循此规则,只需要小心即可。尽管启用root登录实际上并不一定安全,但是您不需要启用root登录,因为您有sudo
。这里确实存在两个相关的问题。要以root用户身份登录日常计算机(网络浏览,电子邮件,文字处理,游戏等)?
为什么Ubuntu默认默认完全禁用root登录并使用
sudo
和polkit来使管理员运行特定为什么要以root用户身份运行命令?为什么不一直以root用户身份运行所有内容?
其他大多数答案都涵盖了这一点。归结为:
如果您将根权限用于不需要它们的任务,而您最终却完成了原本不想做的事情,则可能会更改或损害您的系统
如果您在不需要时以root用户身份运行程序,而最终却执行了您无意执行的操作-例如,出于安全考虑漏洞或其他错误-它可能会以您不希望的方式更改或损害您的系统。
的确,即使不以root用户身份做事,也可能造成损害。例如,您可以删除自己的主目录中的所有文件,该目录通常包括所有文档,而无需以root用户身份运行! (希望您有备份。)
当然,作为根用户,还有其他一些方法可以不小心破坏这些相同的数据。例如,您可以为
of=
命令指定错误的dd
参数,然后在文件中写入原始数据(这使它们变得比仅删除它们更难恢复)。如果您是唯一使用计算机的人,那么您只能以root用户的身份进行的伤害可能不会真正超过使用常规用户权限所遭受的伤害。但这仍然没有理由扩大您的风险,以包括其他破坏Ubuntu系统的方法。
如果使用非root用户帐户运行使您无法控制自己的计算机,那么这当然是不好的权衡。但这不是-每次您真正希望以root用户身份执行操作时,都可以使用
sudo
和其他方法来执行操作。为什么不能以root用户身份登录呢?
以root身份登录的能力本质上是不安全的,这是神话。某些系统默认情况下启用了root帐户。其他系统默认使用
sudo
,有些系统同时配置了两者。用于本地基于密码的登录。其他受人尊敬的操作系统包括RHEL,CentOS和Fedora。在系统安装过程中进行配置。
拥有启用了根帐户的系统并不是绝对错误,只要
您仍然仅在确实需要时使用它,并且
您适当地限制了对它的访问。
新手经常问如何在Ubuntu中启用root帐户。我们不应该向他们隐瞒此信息,但是通常当人们问到这时,是因为他们误以为他们需要启用root帐户。实际上,这几乎是没有必要的,因此在回答此类问题时,重要的是我们要进行解释。启用root帐户还可以轻松自满,并以root身份执行不需要root特权的操作。但这并不意味着启用根帐户本身并不安全。
sudo
鼓励并帮助用户仅在需要时才以root用户身份运行命令。要以root用户身份运行命令,请键入sudo
,一个空格,然后键入该命令。这非常方便,并且许多不同技能的用户都喜欢这种方法。简而言之,由于具有
sudo
,因此无需启用root登录。但是,只要您仅将它用于需要它的管理任务,就可以以root身份启用和登录,这同样安全,只要以下列方式即可:图形虚拟控制台。
从另一个帐户登录时,使用
su
命令。 br /> 以图形方式。当您以图形方式登录时,将运行大量的东西来提供图形界面,最终您将以根用户身份运行甚至更多的应用程序,以将该界面用于任何事物。这违反了仅以root用户身份运行程序的原则,该程序确实需要root用户特权。其中某些程序可能包含错误,包括安全性错误。
此外,有非安全性的原因可以避免这种情况。以图形方式登录为root并没有得到很好的支持-正如loevborg提到的那样,桌面环境和图形应用程序的开发人员通常不会以root身份对其进行测试。即使他们这样做,以root用户身份登录图形桌面环境也不会得到用户的真实世界alpha和beta测试,因为几乎没有人尝试这样做(出于上述安全性原因)。
如果需要运行特定图形应用程序作为root用户,可以使用
gksudo
或sudo -H
。与您实际使用root帐户以图形方式登录相比,作为root用户运行的程序要少得多。远程地。
root
帐户实际上可以执行任何操作,并且在几乎每个类似Unix的系统上都具有相同的名称。通过ssh
或其他远程机制以root用户身份登录,甚至通过配置远程服务来允许它登录,您都可以使入侵者(包括自动脚本和僵尸网络上运行的恶意软件)通过暴力破解,字典攻击(和如果仅允许基于密钥的根登录而不允许基于密码的根登录,则风险可能不会很高。
在Ubuntu中,默认情况下,即使您启用了以root身份登录,也不会启用图形化root登录或通过SSH进行远程登录。也就是说,即使您启用了root登录,它仍然也只能以相当安全的方式启用。这将禁用基于密码的root登录,但允许基于密钥的登录。但是,默认情况下未配置任何密钥,因此,除非您设置了一个密钥,否则也将无法使用。此外,基于密钥的远程root登录比基于口令的远程root登录的危害要小得多,部分原因是它不会造成暴力破解和字典攻击的风险。
即使默认设置可以保护您,我如果您要启用root帐户,则认为检查ssh配置仍然是一个好主意。而且,如果您正在运行其他提供远程登录的服务(例如ftp),则也应进行检查。
结论:
仅在需要时才作为root用户进行操作至;
/etc/sshd/ssh_config
可以帮助您做到这一点,同时仍然可以随时随地为您提供root的全部功能。 但是如果您了解这一点,那么您也几乎肯定不需要启用root帐户。
有关root和
PermitRootLogin without-password
的更多信息,包括我未在此处介绍的sudo
的一些其他优点,我强烈建议在Ubuntu帮助维基中使用RootSudo。评论
“如果您是唯一使用计算机的人,那么您只能以root用户身份遭受的伤害可能不会真正超过使用常规用户特权所遭受的伤害。但这仍然不是扩大风险的理由”,更不用说它使您习惯了……然后您转到另一个系统,会发生什么?与使人们习惯使用shell别名rm -i的荒谬想法相同。您使用的系统没有此功能,那又如何呢?当您认为人类是非常习惯的动物时,让这样的错误让用户坐下婴儿永远不是一个好主意。
–Pryftan
18年2月21日在20:51
辉煌的答案。我见过的最好的。非常感谢您为像我这样的Linux初学者很好地解释了它。
–塞恩·麦卡锡(Sean McCarthy)
19/12/16在6:23
#7 楼
根帐户默认情况下处于禁用状态-表示它已存在但不可用(在恢复模式下除外)。这意味着攻击者知道您的root帐户,但是即使他/她具有root密码也无法使用它。因此,攻击者必须猜测具有管理员特权的用户名和该用户的密码(这比试图找出root密码要困难得多)。在XP中,如果您安装了故障恢复控制台,拥有对您的盒子的物理访问权限,可以启动它(RC)-无需密码。与Ubuntu中的恢复模式相同。在Ubuntu中,当他们说根已被禁用时-真正的意思是该帐户已被锁定。通过将密码更改为与可能的加密值不匹配的值来锁定帐户。这有效地阻止了任何人都能够以root用户身份登录-因为将不可能输入密码。由于有时仍然需要root用户访问权限-Ubuntu内核已被修改为仅在单用户模式下允许root用户本地登录。
也请参见此页面
评论
嗯没有冒犯,但您可能想要阅读问题的标题,然后再次阅读详细信息。
–午夜
2010-12-04 17:24
这非常有帮助-确实与问题有关。它涉及启用帐户的安全性,这是作为root用户运行的先决条件。
– Stefano Palazzo
2010-12-04 20:24
@Stefano Palazzo:尽管所提供的信息可能有用,但我真诚地看不到我需要知道的答案的哪一部分。我已经读过很多遍了。
–午夜
2010-12-05 4:32
并不妨碍人们能够登录到root用户。
–乍得
16-09-19的1:49
#8 楼
这就像用AK47武装一个小孩,而他可以用彩弹枪快乐地玩耍。 ;)我的意思是错误的,因为您和您的应用程序将拥有所需的特权,那就是事情有时可能出错时:(
评论
比喻更聪明。(^_^)
– kit.yang
2010-12-5 9:36
这是完全不恰当的类比。携带AK47的孩子会杀死自己和其他人。具有root用户访问权限的unix用户最多只能使其系统暂时无法运行。 (一个人总是可以重新安装操作系统并恢复操作)。
– kbeta
13年4月29日在20:54
@kbeta是的,我的类比有点过分夸张。请继续前进。
–omeid
13年5月12日在10:49
@kbeta这个比喻是适当的。风险不是无法运行的系统,而是数据和隐私丢失。 root用户可以删除数据。请使用您的幻想来关联杀死和数据丢失。
–n611x007
16年1月9日在19:12
#9 楼
一个非常好的问题...让我从实际的角度回答: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
18年2月21日在21:00
显然,它不限于ext文件系统:unix.stackexchange.com/questions/7950/…
–菲利普
18年2月22日在14:00
是的我知道:)但也感谢您添加。
–Pryftan
18年2月23日在16:53
#10 楼
这种方法背后有很多方面。其中一些是:根目录功能强大。用户具有root访问权限或没有root访问权限,而root访问权限则意味着对计算机的完全控制。如果有问题的计算机被多个人使用,或者root可以访问其他系统或用户文件,则可以为某些用户提供部分root特权。
用户可以隐藏所有操作。
sudo记录通过sudo运行的每个命令。记录sudo的操作有助于我们诊断单个系统/进程的问题和常规配置问题,并帮助我们确定所需的改进。通过其配置文件,sudo可以为用户授予对一组特定命令的root访问权限。这也避免了“全有或全无”的影响,使我们能够为单个用户提供对他们的计算机的更多控制权,并帮助他们摆脱常见的问题。 .stanford.edu / policy / root
评论
但是,当您具有完整的sudo时,可以对su进行sudo su并隐藏您的操作。
–威廉·伊拉斯mus
15年11月27日在22:47
#11 楼
rm /*
可以说您一直在清理行政区域。您已经厌倦了密码,所以您
sudo su
。您仅会分散第二秒钟的注意力,而忘记了CD至/
。那你rm *
。我做完了您可以将其归还,但它是PITA。哦,它也属于/media
!评论
我们总是抱怨我们的PC速度太慢,但是好像它们已针对运行rm这样的rm进行了优化。
–吉比
2012年4月17日在21:37
@jippie因为RM只是破坏了文件的inode链接。删除链接并将空间标记为“空闲”不会花很长时间。
–卡兹·沃尔夫(Kaz Wolfe)
2014年1月20日20:30
@jippie,它应该在10秒倒计时中建立
–希望对您有所帮助
18 Mar 4 '18 at 11:26
#12 楼
为什么不以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权限即可撤消其超级用户访问权限,无需更改root密码并通知所有人新密码。
您甚至可以选择允许用户使用sudo执行哪些命令,以及禁止该用户使用哪些命令。
最后,如果存在安全漏洞,在某些情况下它可以留下更好的审核记录,显示哪个用户帐户受到了破坏。使用Sudo可以更轻松地使用超级用户权限执行单个命令。使用root登录名,您将永久保留在超级用户外壳程序中,必须使用
exit
或logout
退出该外壳程序。这可能导致人们在超级用户外壳中停留的时间比必要时间长,这是因为它比退出并稍后再登录更方便。使用sudo,您仍然可以选择使用以下命令打开永久(交互式)超级用户外壳:命令:
sudo su
...并且无需任何root密码也可以完成此操作,因为
sudo
为su
命令赋予了超级用户特权。但是,这样做时,您只需要知道您正在充当每个命令的超级用户即可。这是一个很好的安全性原则,不要以超级用户身份停留超过必要的时间,而只是为了减少意外损坏系统的可能性(如果没有,则只能损坏用户拥有的文件)。,如果您专门想用这种方式来做,则可以选择为root用户提供一个密码,该密码允许以root用户身份登录。我只是想让您了解Ubuntu惯用
su -
的约定,并尝试解释一些为什么Ubuntu偏爱默认方法的原因。为什么不允许通过SSH进行root登录?
即使您的root用户确实具有密码,使您能够以root用户身份登录,但从外部(例如在SSH中)禁用直接root用户登录仍然是一种很好的安全措施。初次登录后用户必须
sudo su -
或sudo -i
是合理的。其潜在的好处主要是与安全性有关:远程强行强制root密码的可能性。尝试通过SSH暴力破解根密码,经常使Internet上的服务器不断受到骚扰。
它会创建更好的审核记录,以便即使发生如果攻击者稍后确实获得了超级用户特权,则可以看到使用了谁的用户帐户来获取访问权限。
#13 楼
以root用户身份登录后,应用程序,脚本或命令行命令可以访问可能损坏系统的软件敏感部分。这可能是用户或程序员经验不足或由于恶意的隐藏代码导致的。#14 楼
当以root用户身份运行时,太容易搞砸了。您可以像一个命令一样破坏整个系统...#15 楼
我可以补充一点,Windows中的Administrator和Unix中的root之间是有区别的。管理员在根没有任何限制的系统中仍然有一些限制。 Windows中root的正确模拟是System用户。在root / System下使用PC的坏处是,您可能会意外破坏任何内容而不会受到OS的任何警告。
#16 楼
禁止使用root的原因:可能会意外破坏系统文件
可能会感染
不记录操作
使用原因root:
访问所有内容,无需键入密码
GUI,不使用终端来管理系统文件/目录
在我看来, -root帐户仍然可能成为那些反对使用root的原因的受害者,它最多添加的是对您操作的确认。我认为,只要您知道自己在做什么,就可以安全地使用root用户。在那里,我说了。
评论
尽管从技术上讲,有一种方法可以记录包括每个命令在内的操作。这适用于每个用户。请参阅流程记帐,例如此处:linuxjournal.com/article/6144而且,只有当您需要root身份时才真正安全;否则,即使命令应该是安全的,也不是完全安全的(利用等)。
–Pryftan
18年2月21日在21:07
#17 楼
如果应用程序是以root身份运行的,则不能保证它们都不执行。br />
评论
@StefanoPalazzo删除命令后,该帖子没有意义,因此我已将您的编辑回滚了-您也可能删除了该帖子。请注意,与普遍的误解相反,该命令在编写时并不实际上在Ubuntu系统上运行时会删除文件,但与执行该命令的命令类似。因此,如果您担心有人会意外地复制命令并破坏他们的系统,那是不可能的。有关详细信息,请参见手册中的--preserve-root和--no-preserve-root选项的文档。
– Eliah Kagan
2015年5月3日15:59
Solaris根据广泛的POSIX解释(和Bryan Cantrill)将此命令视为未定义的行为,并引发错误
–杰里米·哈耶克(Jeremy Hajek)
16年7月18日在15:23
#18 楼
给定一个知识渊博且谨慎的用户,我不确定是否存在正确的答案。我还没有看到这个答案,所以我以为会很高兴。我不喜欢的是在多用户系统上无意更改了权限,以后需要
chmod
。事后通过chmod进行修复比需要sudo更为烦人,但这取决于我的计划。#19 楼
如果谨慎使用,以root用户身份登录没有任何危险。一种解决方案是在名称不明的sudo组中创建用户,例如gamer
,然后使用sudo执行管理任务。因此,攻击者不仅必须猜测该管理用户的密码,还必须猜测其登录名。如果使用sudo的用户具有
kitty
或gamer
之类的登录名,则不太明显。#20 楼
该软件基于共享库,依赖项,配置文件等。在大多数情况下,在应用程序中单击即可调用多个更改的“链式反应”,而不仅仅是您认为可能的位置。
这些更改将影响系统关键设置时,对您(作为用户)来说是一件好事。
这就是为什么root访问是一种很好的安全模型:发生在您的系统上时,系统会询问您是否要求特权提升。
#21 楼
这是一个两方面的问题,有多个答案。对于一些现实的问题,请检查对此的答案,尽管如此,但又如此可怕:
desktop installations
:如果需要,请使用您自己的用户和sudo,否则将成功使用一个攻击向量,因为您实际上不知道自己在做什么并且系统受到了破坏在较大的公司中,即使您是管理员,您甚至可能甚至没有在自己的工作站上拥有root特权的权限,具体取决于所用的锡纸帽子的数量。
/>
以root身份进行短暂的工作会话有很大的不同(前提是您具有无密码登录名,针对所有服务器的正确ssh密钥管理-并且在您登录时为所有密码登录配置了fail2ban无论如何),并让每个守护程序/服务与自己的用户一起运行(这是必须的)-大多数人似乎并没有意识到其中的区别。
很有趣:尝试使用版本控制的配置管理工具(Ansible / Puppet / Salt /具有git服务器中文件的任何内容),而无需root访问。 (对于这些特殊系统以及监视和备份系统,您是否确实具有某种形式的AAA,对吗?)
还:默认
server installations
在大多数主流发行版IIRC中均不起作用任何严重的工作场所都具有用于访问服务器群的Jumphost /堡垒主机,该服务器主机记录了您无论如何所做的任何事情,如果您有sudo并且没有Jumphost,则可能会受到2FA的进一步保护
修复主机日志以结束,但是无论如何您都希望它们,如果它们不是实时镜像的。
如果还没有ssh日志,那么即使没有ssh日志也被“清除”,甚至没有证据表明您已经在主机上了
对于介于这两个极端之间且缺乏适当的监视/备份/自动化/日志记录措施的任何公司规模(阅读:最有可能使用静态ip的SOHO),在服务器上强制使用sudo可能会很有用。 (连接后很快被执行
rm -rf /
的人规避了,一旦登录了多个root用户,即使没有恶意,也让您记录所有发生的事情的意图都浪费了。 但是,如果您至少没有fail2ban来保护密码登录(如果有的话,尤其是面向互联网的系统), ,还要注意适当的密码处理(密码管理工具,保留策略,无主密码,在员工波动时进行处理...),并对服务器机群进行某种形式的适当更新管理,以便定期对所有服务器进行修补,无论如何,无论是从内部还是从外部,都有可能会被黑客入侵。
并且始终虔诚地使用
sudo su -
并在所有人中间强制使用它不会改变您在这种情况下拥有过多财产的可能性。评论
最后是一个真实且与众不同的答案,而不是通常的“从不做”的口头禅。 +1,谢谢你。
– Andreas H.
19年1月6日15:05
+1对anser的投票,对Andreas H.的评论的投票。非常感谢sjas:一个务实的答案,而不是教条。
–therobyouknow
20 Jun 18'9:46
#22 楼
最终,以root身份运行不会有任何危害。只是一群偏执的人认为重新安装操作系统是不可能的。 “有人可能会破坏程序..”参数,那又如何呢?如果他们这样做了,那么他们已经可以输入您的密码了,或者无论如何只是显示一个root密码请求,然后您给他们提供密码。因为选择了/中的所有内容并删除了,您的系统就被炸毁了?好的,退出安装程序并重新安装。花费不到20分钟的时间,喝杯咖啡放松一下。根很好,只要记得,我就一直在运行根,您知道它能做什么吗?它使安装软件包的工作不再那么麻烦。您不必像通常那样每5分钟输入一次root密码。尝试保存/编辑系统配置文件不会遇到问题,因为它们只是root权限。以root身份运行更容易,更好。评论
是的,我同意,garyshood.com / root xkcd.com/1200 bkhome.org/archive/puppylinux/technical/root.htm。 “有人在我登录时偷了我的笔记本电脑,他们可以阅读我的电子邮件,收取我的钱,然后把我冒充给我的朋友,但至少在未经我允许的情况下,他们无法安装驱动程序。”
–蝎子
20年8月12日在18:03
评论
我认为以root用户身份运行程序没有问题。只是,如果您在Linux中不太明智,则可能会损害操作系统的核心(即使sudoer也会这样做)。除此之外,我认为没有任何问题。但这只是我的观点。相关问题在这里。
发行版之间进入root模式的难度有所不同。我个人为Fedora不允许您开箱即用而感到恼火。 OpenSUSE和Ubunto确实已预先配置了sudo ...,因此,如果选择正确的发行版,则可以最大程度地减少无法访问文件的烦恼。
@GauravButola即使您是专家,如果应用程序受到威胁,这仍然不是一个好主意。
@DaboRoss他在Windows中以管理员身份工作的OP注释;就我在该操作系统上的(一点)经验而言,在我看来它更像Ubuntu:这是一个特权帐户,从某种意义上说它可以做任何您想做的事,但是在例如安装新软件之前它需要获得许可。因此,等效于在Windows中翻译成Ubuntu的用户使用“管理员”用户将以sudo配置运行主要用户,这样它就不会要求通过-直接以root用户身份运行更为危险。