为什么没有以root身份登录的选项?


39

为什么Ubuntu在系统启动时不允许GUI用户像Windows中的管理员那样以root用户身份登录?

为什么他们限制我们仅通过终端登录?


4
还请注意“ gksu”,它允许您以root用户身份运行图形应用程序。即“ gksu nautlius”
杰里米

1
某些发行版确实允许您以root用户身份登录X。CentOS6.2是其中之一。
djangofan

Answers:


42

因为不建议这样做,除非您确切地知道自己在做什么。根是超级用户,意味着它可以执行任何操作和所有操作-仅用于管理任务。如果每个人(或大部分用户)使用root用户,则日常任务可能会面临安全风险,即会被利用。以Windows为例-99%的恶意软件和病毒问题来自使用管理员帐户执行日常任务的人。

让我们看一个例子。

如果有人闯入您的系统并告诉您擦除磁盘该怎么办?如果您以普通用户身份运行,则您将(应该)删除的唯一文件是属于您的文件,而不是其他任何文件。例如,如果您有其他人在使用计算机,则无论您多么努力,都不会碰到他们的文件。这意味着您将无法更改任何系统文件,因此您的系统将保持坚如磐石且不受影响/不受感染。

但是,如果您以root用户身份运行,则可以完全擦除硬盘驱动器,可能会对硬件本身造成一些损害,并且通常会使系统无法使用。更正:任何可以在您的计算机上以root用户身份运行单个命令(某些恶意网站或电子邮件附件)的人都可以这样做。

看一下http://everyjoe.com/technology/explain-why-not-log-on-as-root/,这是一篇不错的文章,可能比我做的更好。

编辑:这是另一个http://ihazomgsecurityskillz.blogspot.nl/2010/09/running-as-root.html

EDIT2:您始终可以使用sudo commandgksu commandcommand超级用户身份运行,这两个都可以使用图形和命令行实用程序。sudo不过,它通常用于CLI,并且gksu是执行相同操作的图形密码提示。

在某种程度上,它们使您变得root暂时- 比持续以root身份运行和冒不稳定的风险好得多。


1
但是,为什么Fedora在启动时允许此选项?
Renjith G 2010年

5
Ubuntu的设计是用户友好的,我怀疑通过禁止root用户,他们消除了以root用户身份运行的普通用户(阅读:Linux新手)的诱惑。
evgeny

我不明白你
Renjith G 2010年

2
我的评论略有错误。让我们这样说:通过禁止图形化root登录,除非人们知道他们在做什么,否则它可以防止人们以root用户身份运行。也就是说,我认为,只应让知道并了解所有风险的有经验的用户使用。
evgeny

1
它的意思是有点侵略性,只是为了使读者重新回到现实中并真正提出观点。
evgeny

11

在标准Ubuntu中,root既不允许从GDM(图形)登录管理器登录,也不能从文本控制台(即,按Ctrl+ Alt+时获得的登录)登录F1

为了执行root(即管理员)的操作,你必须使用sudo一个终端,或任何等价的GUI它的命令:这将要求您提供您的密码,然后执行请求的特权的操作(只有一个)。

正如其他人所指出的,这种行为的原因是,执行root操作具有固有的风险,并且真正需要root特权的操作数量相对较小:通过这种sudo方法,您大多数时候都使用无特权的帐户运行(即无害的)对系统和其他用户),并在root真正需要时获得电源。

一个例子可能有助于澄清。假设您要在计算机上安装新服务(守护程序);这是相对较新的,您需要阅读有关它以及如何根据需要进行配置的信息。您最终将需要大量浏览Web来查找信息,示例配置等,也许需要进行一些IRC聊天以询问更多信息-这些都不需要root电源!最后,您只需要对两个操作进行特权访问:

  1. 安装新程序(即sudo apt-get install ...),然后
  2. 编辑默认配置

计算机安全性中公认的原则是始终使用最小的特权级别来执行操作。-减少了由于软件错误或操作员错误而导致发生不良情况的风险。

Ubuntu的默认设置就是朝这个方向发展。如果您使用的是root登录名,那么您最终将上网冲浪,并从root帐户中进行IRC(以及可能同时进行的所有其他操作),从而不必要地使系统受到威胁。

更新:对于您的编译器示例,我将以这种方式进行:

  1. 以SSH 的常规用户身份从SSH登录到该节点,并从另一个运行图形X11显示器的Ubuntu或GNU / Linux节点登录。确保启用通过SSH的X11转发:

    ssh -X myuser@remotemachine.example.org
    
  2. 在shell / SSH提示符下,发出命令:

    sudo /path/to/the/compiler/install/program
    

    这将以root特权运行编译器安装程序,并(通过SSH转发)访问前面的图形显示。


好。假设我正在使用一台linux机器(通过腻子连接了10个用户)。我想安装一个软件(例如:一个编译器,还需要为它设置环境变量)作为root用户,以供所有用户使用。但是该安装程序仅在GUI模式下运行,而没有命令行安装程序,并且仅在root登录时运行。我如何管理安装?我在ubuntu中安装arm-linux-gcc时遇到了这种情况,但是我已经在我的fedora机器(RedHat shrike版本)中成功安装了相同的情况
Renjith G 2010年

@Renjit G:好的,这本身就是一个好问题,为什么不问这个呢?
Riccardo Murri 2010年

1
@Renjit G:我的意思是建议您提出一个新问题。提出许多特定的问题比提出一个多方面的问题要好,因为它可以提供详细和针对性的答案。通过编辑当前问题,您已经获得的答复似乎只能回答您问题的一半...
Riccardo Murri 2010年

谢谢Murri。我一定会在接下来的帖子中那样关注。
Renjith G 2010年

1
给定这样的编译器,我想我们大多数人都会好奇它是哪个编译器。对于通过APT源或独立的.deb文件分发的任何软件,使用“ sudo”通过命令行进行安装就足够了(是的,即使对于所有用户)。也可以从GUI为所有用户安装此类文件,而无需root用户。您得到的GUI密码提示符等效于“ sudo”。
伤害2010年

8

在Ubuntu中使用sudo的原因可以在这里找到。如果您需要快速“扎根”的方法,请使用sudo -ssudo -i


9
为了明确起见,我相信sudo -s以用户身份创建一个根会话,而sudo -i以根用户身份创建一个根会话。区别的简单方法是发出命令,然后执行“ echo $ HOME”以查看正在使用什么环境。或者用“ cd〜”然后“ pwd”也可以。
Scaine

6

除了使用root进行警告时,还可以通过从终端登录并执行以下操作启用root登录:

sudo passwd

这将首先提示您输入密码,然后要求您更改UNIX密码。您输入的密码将用于该root帐户。

Ubuntu的维基有根和sudo的Ubuntu的内深处一个伟大的文章-警告和陷阱。


5

这里有两个问题。一种是,为什么在Ubuntu中默认禁用root登录?这里的几篇文章已经解决了这一问题。

第二个问题是,为什么图形根登录名特别被贬低?

非图形root登录的所有缺点也适用于图形root登录。但是,当您以图形方式登录时,与非图形方式登录相比,运行的程序更多,以更复杂的方式运行。整个图形用户界面和有效使用GUI所需的所有图形程序都将以root用户身份运行。它们中的任何一个微小的安全漏洞都将使某人可以完全控制您的系统。

在Ubuntu中完全不建议以root用户身份登录,但是在安全社区中尚未达成共识,这通常是一种不好的做法。但是,图形化root登录根本不是一个好习惯,几乎所有操作系统都已淘汰它们或强烈建议不要这样做。

在较小程度上,以图形登录名拥有非root用户(尤其是具有以sudo或PolicyKit作为root用户执行操作的能力的用户)会带来风险。但是,与图形环境中的所有内容实际上必须以无限制功能的root用户身份运行时相比,它们的控制权要强得多。不过,对于安全性至关重要的情况,通常建议完全放弃图形界面,这就是为什么Ubuntu Server默认不附带GUI并正式建议不要安装GUI(尽管这样做是受支持的)。 。

在Windows世界中,您现在可以以一种基本消除图形用户界面的方式安装Windows Server (从技术上讲,保留了一些元素,但是它被精简了,并且您不能运行任意图形程序)。这是基于相同的推理。

即使您决定启用root登录,也请不要以root用户图形登录。启用root登录可能会使您面临更高的安全风险;以root身份运行整个图形环境会给您带来极大的风险。

此外,除了设计为以gksu / gksudo / kdesudo作为root用户运行的图形管理工具之外,大多数图形程序都不打算作为root用户运行。由于未在此模式下对其进行广泛的测试,因此它们可能会失败或行为异常(这特别糟糕,因为它们以root身份运行)。

最后,即使某些图形管理工具(如)users-admin如果以root身份运行也将失败,因为它们希望由普通用户运行并使用PolicyKit以root身份执行操作(实际上从未以root身份运行)。


4

打开终端(Ctrl+ Alt+ T或Dash主页>更多应用程序>已安装(扩展)>终端)。

激活根帐户

在终端中键入或粘贴sudo passwd root。输入您的普通登录密码(如果要求输入密码),然后将要求您输入新root密码并进行确认。

添加新的登录提示,使您可以输入超级用户名和密码

在终端中键入或粘贴。gksudo gedit /etc/lightdm/lightdm.conf。这将打开一个图形文本编辑器窗口,您可以在其中编辑登录屏幕的配置文件。

将行添加greeter-show-manual-login=true到文件的底部。

该文件现在应如下所示:

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true

保存lightdm.conf文件并退出gedit。

重新启动Ubuntu 12.04,您将看到一个新的“登录”窗口(代替了之前的“其他”窗口),该窗口允许输入用户名和密码。输入root用户名,然后输入您分配给根帐户的密码。

我希望这可以帮助需要/想要root访问的其他人。


2

至于ubuntu 12.04 LTS,您可以使用root特权执行此操作:

echo "greeter-hide-users=true" >> /etc/lightdm/lightdm.conf

然后要求您输入用户名和密码以图形方式登录。我假设您已经为root设置了密码:)

我知道有无数的原因您不应该直接以root用户身份登录,但是,当您真正意识到以root用户身份的使用带来的便利时,确实存在一些罕见的情况(例如,在vmware中运行的测试箱中)。


1

因为root用户和Administrator(在Windows中)相当于计算机的上帝。该用户可以进行任何调整,从文件许可权到擦除整个文件系统。通常,普通家庭用户以管理员身份运行(使用该名称或第一次启动时设置的其他名称)。由于以该用户身份执行的任何程序都是系统范围的,因此很危险。

对管理特权的缺乏控制会导致病毒/恶意软件甚至自毁问题。因此,包括Ubuntu在内的许多发行版都通过额外的步骤来限制向高功率的过渡(某种程度上的认知步骤有助于坚持“我在这里所做的任何更改都是范围更广的更改”)。


呵呵。……“我在这里所做的任何更改都具有更大的范围”。
emf 2010年

1

尽管您不能以root用户身份直接登录(由于其他人已经很好地说明了原因),但是您可以以root用户身份运行GUI应用程序。例如,系统→管理→Synaptic软件包管理器是作为root运行的图形应用程序。

要以root用户身份运行应用程序(文本应用程序或GUI应用程序),只需使用以下命令之一:

sudo name-of-the-application
gksu name-of-the-application

它们几乎是相同的。主要区别在于,第一个在终端上要求您输入密码,第二个使用图形对话框。


1
sudo和之间的区别gksu比您输入密码的地方更重要。 gksu是GUI应用程序和sudo命令行的首选,请参阅此处此处
Warren Hill

1

实际上,一般不建议您使用Root,但有时您会获得一连串需要root特权的终端命令,而以root身份登录更方便。我使用sudo xtermgksu xterm打开root终端,我认为在您拥有方便的“ root @”术语提示时,区分哪个术语窗口具有root特权会更容易一些


0

附加说明:Ubuntu不允许GUI用户以root用户身份登录,因为Ubuntu阻止您使用GUI应用程序(例如nautilus)意外删除或删除重要文件。

仅使用CLI用户界面,可以减少发生错误的风险。但是以前,即使在CLI模式下,我们也无法使用root用户登录,因为Ubuntu为root用户创建了随机密码。根管理任务只能通过将用户密码与命令sudo或gksu一起使用来完成。

它基于Debian规则。


gksu命令是什么意思?
Renjith G 2010年

1
man gksu:gksu-
Su

1
抱歉,我还是不太清楚
Renjith G

我的意思是“ gksu”是指su和sudo的GTK +前端。
squallbayu,2010年

1
你是对的。在终端中尝试“ gksu nautilus”。将显示具有root特权的Nautilus。
squallbayu,2010年

0

鉴于没有充分的理由以root用户身份登录,我想RH(允许root用户登录)和ubuntu(使用sudo / gksu进行所有操作)之间的区别是偏爱的。

至于问题的其他部分,您应该可以通过以普通用户身份登录并按ALT-F2并运行来运行图形安装gksu。在出现的对话框中,只需输入启动安装程序的命令。


0

是根推荐用于日常的日常任务。由于它提供了超级用户特权,因此可能会被滥用。因此,登录时没有root用户选项。


0

您应该始终以自己的身份登录,然后使用sudo以root身份执行操作。默认情况下,Ubuntu设置为允许您进行大多数所需的访问。较小的更改将解决其余的问题(例如将您的已用用户添加到其他组)。以超级用户身份登录被认为是不良做法。行业最佳实践是此处的默认设置。

从安全角度来看,能够以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.