当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

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

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

最佳解决思路

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

我们来看一个例子。

如果有人闯入您的系统并告诉它擦除您的磁盘怎么办?如果您以普通用户身份运行,那么您应该(应该)删除的唯一文件是属于您的文件,而不是其他任何人。比方说,如果你让其他人使用电脑,无论你怎么努力,都不会触及他们的文件。这意味着您将无法更改任何系统文件,因此您的系统将保持rock-solid且未受影响/未受感染。

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

看看http://everyjoe.com/technology/explain-why-not-log-on-as-root/,这是一篇很好的文章,可能比我更好地解释它。

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

编辑2:您始终可以使用sudo commandgksu command作为超级用户运行command,这两者都可以使用图形和命令行实用程序。但是,sudo通常用于CLI,而gksu是执行相同操作的图形密码promt。

在某种程度上,它们让你暂时成为root – 比不断运行并且冒着不稳定的风险要好得多。

次佳解决思路

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

为了执行root(即管理员)操作,您必须在终端或其等效的GUI中使用sudo命令:这些命令将询问您的密码,然后执行所请求的特权操作(并且只执行该操作)。

正如其他人所指出的那样,这种行为的原因是执行root操作具有内在的风险,并且真正需要root权限的操作数量相对较少:通过使用此sudo方法,您使用非特权帐户运行大部分时间(即,对系统和其他用户无害)并在真正需要时获得root功能。

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

  1. 安装新程序(即sudo apt-get install ...),和

  2. 编辑默认配置

计算机安全中普遍接受的原则总是使用尽可能少的权限级别来执行操作。 – 这降低了由于软件中的错误或操作员的错误而导致不良事件发生的风险。

Ubuntu的默认设置就是这个方向;如果您使用root登录,相反,您最终会上网,从root帐户执行IRC(以及可能同时执行的所有其他操作),从而不必要地将系统暴露给威胁。

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

  1. 以常规用户身份通过​​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转发)您面前的图形显示。

第三种解决思路

在Ubuntu中使用sudo的原因可能是found here。如果您需要快速访问”go root”,请使用sudo -ssudo -i

第四种思路

除了使用root的大量警告之外,您还可以通过登录并从终端执行以下操作来启用root登录:

sudo passwd

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

Ubuntu Wiki有一篇关于Ubuntu中root和sudo深度的文章 – 警告和陷阱。

第五种思路

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

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

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

在Ubuntu中不推荐以root身份登录,但是在安全社区中没有达成共识,认为这通常是一种不好的做法。然而,图形根登录只是一种不好的做法,几乎所有操作系统都将它们逐步淘汰或强烈推荐它们。

在较小程度上,在图形登录中拥有non-root用户(特别是能够以root用sudo或PolicyKit执行操作的用户)会带来风险。但是,与图形环境中的所有内容必须实际以root身份运行且具有无限功能的情况相比,它们受到更多控制。尽管如此,对于安全性至关重要的情况,通常建议完全取消图形界面,这就是为什么Ubuntu Server默认情况下不附带GUI并且正式建议不要安装一个(尽管它支持这样做) 。

在Windows世界中,您现在可以以essentially eliminates the graphical user interface的方式安装Windows Server(从技术上讲,某些元素仍然存在,但它非常简单,您无法运行任意图形程序)。这是基于相同的推理。

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

此外,除了设计为使用gksu /gksudo /kdesudo以root身份运行的图形管理工具之外,大多数图形程序不打算以root身份运行。因为它们没有在这种模式下进行广泛测试,所以它们可能会失败或行为不规律(这将特别糟糕,因为它们以root身份运行)。

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

第六种思路

开放式终端(Ctrl + Alt + T或Dash home>更多应用>已安装(展开)>终端)。

激活根帐户

在终端类型或粘贴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,您将看到一个新的“Login”窗口(替换以前的”Other”窗口),该窗口允许输入用户名和密码。输入root作为用户名,然后输入您分配给root帐户的密码。

我希望这有助于其他需要/想要root访问的人。

第七种思路

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

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

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

我知道有无数的理由你不应该直接以root用户身份登录,但是,如果你真的很欣赏root的便利,那么确实会退出一些罕见的情况(例如在vmware中运行的测试盒中)。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1878.html,未经允许,请勿转载。