为什么不应该以root用户身份登录Linux系统

在Linux上,root用户等同于Windows上的管理员用户。然而,虽然Windows长期以来一直有普通用户以管理员身份登录的文化,但在Linux上不应该以root用户身份登录。

Microsoft试图使用UAC改进Windows安全实践-您不应该在Linux上以root用户身份登录,原因与您不应该在Windows上禁用UAC的原因相同。

为什么Ubuntu使用SUDO

阻止用户以root身份运行是Ubuntu使用sudo而不是su的原因之一。默认情况下,Ubuntu上的root密码是锁定的,因此普通用户在不重新启用root帐户的情况下无法以root用户身份登录。

在其他Linux发行版上,虽然许多应用程序可能会抱怨(甚至拒绝以root身份运行,就像VLC那样),但在历史上,从图形登录屏幕以root用户身份登录并获得root桌面是可能的。来自Windows的用户有时决定以root用户身份登录,就像他们在Windows XP上使用管理员帐户一样。

使用sudo,您可以运行获得root权限的特定命令(前缀为sudo)。使用su,您可以使用su命令获得一个根shell,您可以在其中运行您想要在退出根shell之前使用的命令(希望如此)。sudo帮助实施最佳实践,只运行需要以root身份运行的命令(如软件安装命令),而不会让您停留在根shell,在那里您可以保持登录或以root身份运行其他应用程序。

限制损害

当您以自己的用户帐户登录时,您运行的程序将被限制写入系统的其余部分-它们只能写入您的主文件夹。您不能在没有获得root权限的情况下修改系统文件。这有助于保护您的计算机安全。例如,如果Firefox浏览器存在安全漏洞,而您以超级用户身份运行它,则恶意网页将能够写入您系统上的所有文件,读取其他用户帐户主文件夹中的文件,并将系统命令替换为受损的命令。相反,如果您以受限用户帐户登录,恶意网页将无法执行上述任何操作-它只能在您的主文件夹中造成破坏。虽然这仍然可能导致问题,但总比让整个系统受损要好得多。

这还有助于保护您免受恶意应用程序或普通错误应用程序的影响。例如,如果您运行的应用程序决定删除它有权访问的所有文件(可能包含一个令人讨厌的错误),该应用程序将擦除您的主文件夹。这很糟糕,但是如果您有备份(您应该有备份!),恢复主文件夹中的文件是相当容易的。但是,如果应用程序具有root访问权限,它可能会删除硬盘上的每个文件,从而需要完全重新安装。

细粒度权限

较早的Linux发行版将整个系统管理程序作为root运行,而现代的Linux桌面使用PolicyKit对应用程序接收的权限进行更细粒度的控制。

例如,可以仅授予软件管理应用程序通过PolicyKit在您的系统上安装软件的权限。该程序的界面将以受限用户帐户的权限运行,只有安装软件的程序部分将获得提升的权限-而该程序部分将只能安装软件。

该程序不会拥有对整个系统的完全root访问权限,这可以在应用程序中发现安全漏洞时保护您。PolicyKit还允许受限用户帐户在不获得完全root访问权限的情况下进行一些系统管理更改,从而更容易以受限用户帐户运行,麻烦更少。

Linux将允许您以root身份登录到图形桌面-就像它允许您在系统运行时删除硬盘上的每个文件一样,或者将随机噪音直接写入硬盘,从而清除您的文件系统-但这不是一个好主意。即使您知道自己在做什么,系统也不是设计为以root身份运行的-您绕过了使Linux如此安全的大部分安全体系结构。

相关文章