永远是根到底有什么问题?


83

我觉得这是一个愚蠢的问题,但这是我一段时间以来一直想知道的事情。

我有一个VPS,这是我的第一个大型Linux项目。我是唯一可以访问它的人。我的问题是,仅以root身份登录而不是创建帐户并为他们提供sudo访问权限有什么问题?如果sudoer可以做root可以做的所有事情,那有什么区别?如果黑客可以将我的密码破解到我的标准非root帐户,那么他也可以执行sudo命令,那么黑客破解我的root帐户又有多大作用呢?


28
我还要评论一下,如果您不熟悉“ Unix Way”,这不是一个愚蠢的问题。如果您以新的Linux管理员身份首先提出问题,则应该获得奖励。
巴特·

我想评论一些答案。尤其是那些说“你可以扎根的东西”的人。我认为这不是重点...“ rm -rf /”与“ sudo rm -rf /”相同。关键在于,“ sudo rm”之类的东西不起作用,但“ sudo startMyApp on low port”起作用。
Zlatko

永远不存在什么问题?
ostendali

Answers:


70

如果您以root用户身份登录,则可以轻松地擦除目录或做一些事后回想起来的事情,而这些事情在您的指尖转动时对系统确实是愚蠢的,而作为用户,您通常必须在您的工作中增加一些精神上的循环在做危险的事情之前先打字。

同样,您以root用户特权作为root用户特权运行的任何程序,这意味着如果某人或某物使您运行/编译/浏览危险网站并想要破坏您的系统(例如特洛伊木马或其他恶意软件),则它可以完全访问您的系统,并可以执行所需的操作,包括访问1024以下的TCP端口(例如,它可能使您的系统在您不知情的情况下变成转发器)。

基本上,您是在问一些自己无法登录的问题。我知道许多人最终很高兴他们在粗心的时刻有了安全网。

编辑:还有一个问题是root是脚本和黑客最知名的,因此很容易成为目标。禁用该帐户并强迫用户使用sudo的系统意味着,任何尝试从ssh破解根或对该帐户进行本地攻击的尝试都将他们的头撞在墙上。他们将不得不猜测/破解密码用户名。通过某种程度的模糊性来保证安全,但是很难说它不能阻止大多数脚本小子攻击。


25
+1-使用“ sudo”使以root用户身份执行程序成为明显的行为。这不是“制止黑客”的问题,而是要养成以非特权用户的身份养成习惯,并且将根特权的调用作为有意的公开行为的问题。
埃文·安德森

2
我开始怀疑埃文是否真的是一个AI。
巴特·西尔弗斯

11
Sudo还添加了审计跟踪。当以sudo运行时,将记录谁,什么以及何时记录。哪个日志文件可以随发行版而变化,但是RedHat发行版倾向于使用/ var / log / secure,而Ubuntu使用/var/log/auth.log ...我不确定这是否适用于所有基于Debian的发行版。
2009年

3
+1-不仅涉及创作或做事的权利,还涉及销毁的权利。以root用户身份登录(或在其他操作系统上以此类推)在安全关闭的情况下随身携带枪支。您可能永远不会故意触碰该触发器,但是您是否会相信自己做到这一点呢?
Maximus Minimus 2009年

3
MH:/ me戴上牛仔帽,甩开手枪上的安全装置,打开啤酒,低沉地喃喃自语关于紫罗兰的东西,然后以root身份登录。
Kyle Brandt

29

如果您不允许白痴以root用户身份登录到服务器,那么不要总是以root用户身份运行。除非你能忍心说你从来没有做过白痴。不完全是?你确定?:)

好处:减少同时成为root 白痴的可能性。


6
+1-“好处:减少您同时成为root和白痴的可能性。” 我绝对喜欢这个。
埃文·安德森

+1是斯科特·亚当斯(Scott Adams)的哲学,即每个人都是白痴。:)是的,这也意味着您和我。
埃妮,

绝对-这是我在求职面试中的关键问题之一-您上一次搞砸了是什么时候?每个人都有,您只需要阅读此处有关“最有趣的sysadmin fubar”之类的主题。如果某人一生中至少不承认自己犯了一次真正的愚蠢错误,那么可能有很多不想与他们合作的原因。
汤姆·牛顿

9

主要原因是错误。如果您始终是root用户,那么简单的错字可能确实会使系统搞砸了。如果您仅以root用户身份登录或使用sudo进行需要的操作,则可以最大程度地减少犯错误错误的风险。


9

当您是root用户时,您会懒于权限,因为您一直可以访问所有内容,因此您不在乎什么是777或644或其他任何东西。因此,如果您确实让其他人进入您的系统,而又不想访问所有内容,那么突然之间,要使机器安全地供他人使用就变得非常困难。


5
这称为“根腐病”。
kmarsh

1
我喜欢这个词,“根腐烂”。确实,始终以root用户身份运行可以将* nix机器变成怪异的Windows 95机器,而无需多用户安全。(我记得几年前的一台SCO机器,共享记帐应用程序上的每个用户都以root用户身份运行,因为“它使权限问题消失了。”>“叹气”)
Evan Anderson,2009年

我记得有这样的解释-他们有一个以root身份运行的mailinglist工具以及sendmail。我的回答是“对于黑客来说,许可问题也消失了。”
duffbeer703

7

不以root用户身份登录的背后有一些关键原则:1)root密码在登录时永远不会通过网络发送。2)如果多个用户以同一帐户(root或其他用户)身份登录,则无法判断谁做了某件事。3)不小心做“愚蠢”的事情


3

这样做更多是为了保护自己,以便您有第二次机会查看要运行的更高特权命令,类似于Windows中的UAC。rm -rf /以root用户身份登录时,意外地执行类似的操作非常容易 。

此外,您具有可追溯性。在您是唯一一个(理论上)发出命令的情况下,这不是一个大问题,但是登录和追溯到个人的能力是许多形式的分析的关键组成部分。


可追溯性在由多个人担任系统管理员的系统中至关重要。这不仅是监管机构要求的。
APC

我在星期五这样做。而不是删除“ / dump / folder /”,而是删除了文件夹/。一个令人反感的反斜杠让我想起了为什么我们不以root用户身份登录。
2009年

2

区别主要
在于: 您不能无意间做任何坏事。
那个“邪恶的”代码不能接管系统。
注意:邪恶的代码不一定意味着任何人都已经可以访问系统。


我注意到,这些天来,恶意代码通常意味着垃圾邮件机器人,它可以以任何用户身份运行。
埃妮,

如果您想到的是病毒(试图销毁某些东西)或rootkit,那么如果您不是root用户,那么对于恶意软件而言则要复杂得多。
StampedeXV

2

您应该始终使用具有最低权限的帐户。始终以root身份运行会导致不良习惯和懒惰,当您与多个用户一起工作或将某些内容暴露于公共/半公共网络时,这会使生活变得不愉快。

还请记住,密码破解只是一种折衷方案-也不是最常见的方案。您更有可能成为浏览器漏洞或系统上运行的某些守护程序中的漏洞的受害者。

考虑一下您使用的代码而无需考虑。例如,Adobe Flash的Linux端口,这是一大堆便便,直到最近才可用。您认为该代码的安全性如何?您是否希望能够完全控制您的系统?


2

它可以防止SSH暴力攻击。每个Unix都有一个“ root”帐户。但是,从外部不清楚您的“ sudo”用户名是什么。因此,如果有人想强行闯入,他们知道这里有一个root帐户并且可能会尝试。但是,如果您使用sudo,他们不知道从哪里开始。



1

我的建议是尝试一直使用root。您很快就会发现为什么不应该这样做:)


1

即使我不信任“默默无闻的安全性”,使用自定义登录名代替已有的root登录名也肯定有优势。因此,您还可以配置SSH以阻止root登录。

正如其他人所说,root用户可以做任何事情而无需任何确认。因此,使用无特权的用户可以防止出现愚蠢的错误和错别字。

支持多个用户帐户的另一个论点是在不同的用户下运行不同的软件。这样做,如果在一个应用程序中利用了安全漏洞,则利用者只能访问其运行用户可以访问的文件和资源。

不使用root的最后一点是:资源消耗。Root对可以使用的内存,处理时间,文件处理程序或磁盘空间没有限制。在许多文件系统上,有仅保留给root用户的数据块。因此,普通用户永远无法使用它们来填充磁盘。ulimit命令还可以用于限制用户可以使用的内存和文件处理程序编号。但是,如果您是root用户(或以root用户身份运行的应用程序),则没有任何东西可以阻止您更改此限制。


0

是的,我同意你的看法,我认为这是防止人为错误,有时甚至防止恶意程序的问题。我从未见过的坏事是使用root作为默认的gnome帐户。
我认为大多数这样做的用户是最近迁移到Linux或Unix的Windows用户。尝试将管理员特权的使用复制到root。


0

以root用户身份登录没有任何问题。它有助于发展肌肉记忆力,仅键入安全命令,并在执行具有重大后果的动作时提高思维的准确性。我强烈建议以root身份工作,以更好地进行系统管理。

你也可以做一些很酷的事情 ping -i 0.2 -c 1000 example.com

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.