如何不成为root用户? 管理员是root吗?

我在我的电脑上安装了Ubuntu。 要登录,我使用我在安装过程中创建的用户名和密码。 这是否意味着我是root用户? 如果是,那么我如何成为非root用户呢? 看起来非root用户比admin用户更安全。

您是管理员,但不是rootroot用户可以做任何事情。 管理员可以root身份执行操作 ,但通常管理员执行的操作通常不是root用户执行的操作 。 这样,您就可以完全控制自己的系统,但只有在您选择使用它时。

当您尝试以root身份执行操作时,Ubuntu会询问您的密码,以确保它真的是您。

用户帐户:人为,否则

真正的人类用户拥有用户帐户来代表他们。 您在安装Ubuntu时创建了一个此类帐户。 但并非所有用户帐户都代表真正的人类用户

真实的人类用户通过其用户帐户被授予(和拒绝)能力。 他们必须使用他们的用户帐户来使用该系统; 因此,他们的用户帐户的能力和限制适用于他们。

用户帐户还用于编写一组能力和限制。 一些用户帐户 – 实际上,除非您拥有该计算机的许多人类用户,否则存在,以便某些程序或命令可以使用其身份,具有正确能力的身份和作业限制来运行。

例如, www-data用户存在,因此如果您运行Web服务器,它将拥有服务器可访问的数据。 不需要授权真正的人类用户对这些数据进行未经检查的更改,并且不必授权Web服务器执行服务Web所不需要的任何操作。 因此,网络数据和系统的其他部分都更安全,防止意外或故意破坏,而不是网络服务器是由一些人类用户运行的,他们拥有网络服务器的所有权力(以及网络服务器的权力)具有)。

最重要的非人类用户帐户

超级用户 ,其用户名为root ,是一个非人类用户帐户,具有非常具体的能力和限制组合: 所有能力,没有限制

root 允许做任何事情。 仍然有root无法做的事情,因为系统本身无法执行或理解它们。 因此root不能杀死 不间断睡眠 的过程 ,或者让摇滚太重而无法移动,然后移动它 。

许多重要的系统进程(如init )以root身份运行, root用于执行管理任务。

我可以以root身份登录吗?

可以配置root帐户,以便可以使用密码登录,但默认情况下在Ubuntu中不会启用此function。 相反,您可以将root视为像www-datalpnobody和其他非人类帐户。 (运行cat /etc/passwdgetent passwd来查看它们。)

人类用户使用他们自己的用户帐户登录,然后如果要使用其他用户帐户执行某项任务,则会导致使用该身份执行该任务 ,而无需实际以该用户身份 登录

可以配置其他非人类用户,例如www-data ,因此也可以以其身份登录。 但这种情况非常罕见,而在其他类似Unix的操作系统中,以root身份登录终端是很常见的。 root身份运行整个图形界面的风险,加上有多少图形程序不是以root身份运行而且可能无法正常运行,这意味着您永远不应该尝试获得root 桌面会话

请注意,虽然在Ubuntu中默认禁用以root身份登录,但是有一些方法可以获得root shell而无需以root身份进行身份validation,从而产生类似的效果:最常见的是sudo -s-i , 恢复模式和类似技术 。 (如果您不知道这些是什么,请不要担心。)这实际上并没有登录:在恢复模式下,您在任何登录之前成为root ; 使用基于sudo的方法,你只是以root身份运行shell。

管理员

在Ubuntu中,管理员是那些可以在他们选择的时候root用户做任何事情的用户。

系统设置,显示人员用户帐户,包括管理员帐户。
系统设置>用户帐户。 “Eliah Kagan”是一名管理员,因此他可以像root一样做事,但他不是root

我是我的Ubuntu系统的管理员。 当我运行程序时,通常它们以ek运行(“Eliah Kagan”是与ek用户名对应的全名。)

当我运行AbiWord或LibreOffice时,它运行为ek 。 当我运行Firefox,Chromium,Empathy或Pidgin时,它运行为ek 。 运行以提供桌面界面的程序以ek运行。

但是,我是管理员,所以如果我需要执行管理任务,我可以这样做。

须藤

在命令行中,我通常会使用sudoroot身份运行命令:

 sudo command... 

这将提示我输入密码。 (不是root的密码; root没有密码。)

  • 因为我是管理员,所以我可以以root身份执行操作。 在默认配置中,我必须输入我的密码才能执行此操作。
  • 非管理员的用户无法以root身份执行操作,即使输入密码也是如此。 如果运行它们的用户不是管理员,则sudo命令将失败。

由于管理员是完全普通的用户, 除了能够以root身份执行操作之外 ,运行需要root权限的命令仍然会失败,除非命令root身份运行。

屏幕截图显示了对sudo的需求:管理员只能通过<code/> root </ code>成功运行某些命令,这通常是通过在命令中添加sudo(和空格)来完成的。”><br />  <sup><strong>屏幕截图说明了使用<code>sudo</code>执行管理任务的必要性。</strong></sup>  <sup><strong>(基于Randall Munroe的 “Sandwich” 。)</strong></sup> </p>
<h2>  sudo,图形化 </h2>
<p> 图形程序可以通过<code>sudo</code>图形前端以 <code>root</code>身份运行,例如<code>gksu</code> / <code>gksudo</code>和<code>kdesudo</code> 。 例如,要以<code>root</code>身份运行GParted,我可以运行<code>gksudo gparted</code> 。 然后我会以图形方式提示我的密码。 </p>
<p><img src=

由于我以图形方式提示,因此不必是终端。 这是管理工具以root身份运行的方式之一。

Polkit

Polkit (曾经称为PolicyKit)是管理员以root身份执行操作的另一种方式。 程序访问执行操作的服务。 有时,行动正在运行整个程序; 有时行动更有限。

目前,许多图形系统管理实用程序都设置为默认使用polkit,而不是使用sudo

这种实用程序的一个例子是软件中心。 它充分利用了polkit,要求用户只有在想要执行需要root权限的操作 时才输入密码。 (这也可以通过基于sudo的身份validation来实现,但实现起来更难和更难。)

在软件中心,我可以找到并阅读有关应用程序的内容; 当我想安装它时,我被要求输入密码。

通过polkit进行身份验证,以在Ubuntu软件中心中安装应用程序。

polkit如何与众不同

任何图形程序都可以使用gksudo和其他图形sudo前端以root身份运行。 (该程序可能无法正常工作 ,具体取决于它是否设计为以root身份使用。但启动程序的命令将以root身份执行。)

虽然polkit现在比sudo GUI前端更常见,因为Ubuntu上的应用程序在幕后以root身份执行操作,但是如果存在允许它并指示可以执行哪些操作的配置文件 ,则polki将仅以root身份运行图形应用程序。

Polkit,非图形

pkexec是用于使用polkit运行程序的命令。

sudo一样, pkexec可以运行非图形命令。 (并且它不需要定义命令function的配置文件 – 它只是以root身份运行命令。)

 pkexec command... 

pkexec以图形方式提示输入密码,即使它是从终端运行的(这是其行为与gksudo更类似于运行直接sudo )。

(如果没有GUI – 例如,如果您从虚拟控制台或纯文本SSH会话登录 ,或GUI未正常运行 – 则pkexec将正常降级并在命令上提示您输入密码线。)

使用pkexec在终端中运行命令。

成功执行身份validation后,该命令将在终端中运行。

成功进行polkit身份验证后,命令将作为<code/> root </ code>无缝运行。”></p>
<h2> 以<code>root</code>身份运行其他用户命令 </h2>
<p>  <code>root</code>是特殊的,因为它可以做任何可以完成的事情。 但它是一个像任何帐户一样的用户帐户,并且可以稍微修改以<code>sudo</code> (直接或使用图形前端)或polkit以<code>root</code>身份运行命令的方式,以便像任何其他用户一样运行命令: </p>
<pre> <code>sudo -u <em>username</em> <strong>command...</strong></code> </pre>
<pre> <code>gksudo -u <em>username</em> <strong>command...</strong></code> </pre>
<pre> <code>pkexec --user <em>username</em> <strong>command...</strong></code> </pre>
<h2> 什么? 你先输入<code>sudo</code> ? 那安全怎么样?! </h2>
<p> 使用<code>sudo</code>运行命令有点像调用papal infalliblity 。 </p>
<p>  <strong>当你<em>用<code>sudo</code></em></strong> [invoke papal infallibility] <strong><em>运行一个命令时</em></strong> <strong>, <em>Ubuntu</em></strong> [天主教徒]会<strong>努力确保你<em>真的是你</em></strong> [真的是教皇]。 </p>
<p>  <sup>是的,我知道教皇的无谬误(即使是规范性的)是陈述性的;</sup>  <sup>并行不完美。</sup> </p>
<p> 尝试用<code>root</code>用<code>sudo</code> (或polkit)做一些事情是很重要的 –  Ubuntu不仅仅是像你运行程序一样让它滑过。 </p>
<p> 系统会提示您输入密码。  (然后,您已经记住了很短的时间,因此您不必在管理系统时不断输入密码。) </p>
<p> 除了<em>提醒您要小心外</em> ,这<em>还可以</em>防范两种情况: </p>
<ul>
<li> 有人使用您的计算机(或移动设备),可能是以检查他们的电子邮件或类似的无害目的为幌子。 在这里,它们仍然可能造成一些伤害 – 例如,他们可以修改或删除您的文档。 但是,他们无法管理系统,因为他们无法输入您的密码。 </li>
<li> 除非您输入密码,否则不应该管理系统的程序不能这样做。 例如,如果您的Web浏览器受到安全漏洞的攻击并运行恶意代码,则它仍然无法执行管理任务。 它无法创建和删除用户,修改以<code>root</code>身份安装的程序(包括由程序包管理器安装的任何程序,如LibreOffice),或者在深层次更改系统。 </li>
</ul>
<h2> 我听说过<code>su</code> 。 那是什么? 我可以用吗? </h2>
<p>  <code>su</code>作为另一个用户进行身份validation,并运行命令(或启动交互式shell)。 可以限制允许<em>谁</em>使用<code>su</code> ,但<code>su</code>使用<em>目标</em>帐户的密码进行身份validation,而不是运行用户的密码。 </p>
<p> 例如, <code>su <em>username</em> -c ' <strong>command...</strong> '</code>运行<strong><code>command...</code></strong>作为<em>用户名</em> ,就像<code>sudo -u <em>username</em> <strong>command...</strong></code> </p>
<p> 但是当您使用<code>sudo</code>作为<em><code>username</code></em>运行命令时,请输入<strong>密码</strong> 。 使用<code>su</code>运行命令作为<em><code>username</code></em>时,输入<strong><em><code>username</code></em>密码</strong> 。 </p>
<p> 由于<code>su</code> <em>为目标用户</em>执行身份validation<em>,</em>因此只能<em>在启用帐户的</em>用户上运行命令。 </p>
<p> 默认情况下禁用<code>root</code>帐户(如<code>www-data</code>和<code>nobody</code> )。 没有密码可以以<code>root</code>身份登录。 所以你不能使用<code>su</code>来以<code>root</code>身份运行命令。 </p>
<p> 您<em>可以</em>使用<code>su</code>作为另一个可以登录的用户运行命令(通常包括系统中代表人类的所有用户帐户)。 </p>
<p> 以guest身份登录时,根本不能使用<code>su</code> 。 </p>
<h3> 结合<code>su</code>和<code>sudo</code> </h3>
<p> 非管理员的人甚至可以使用<code>su</code>作为管理员运行<code>sudo</code> 。  (这是可以的,因为他们需要管理员的密码才能以管理员身份运行命令。)也就是说,受限用户可以使用<code>su</code>来运行<code>sudo</code>以<code>root</code>身份运行命令。 这看起来像: </p>
<pre> <code>su <em>username</em> -c 'sudo <strong>command...</strong> '</code> </pre>
<p>  (以这种方式运行图形程序需要特别小心 。) </p>
<h2> 以<code>root</code>身份运行命令是不是更安全的方式? </h2>
<p> 可能不是。 </p>
<h3> 如果不允许用户以<code>root</code>身份行事怎么办? </h3>
<p> 使他们成为有限的用户而不是管理员。 </p>
<h3> 如果以管理员身份运行的程序尝试<code>sudo</code>到<code>root</code>怎么办? </h3>
<p> 除非你已经重新配置<code>sudo</code>以让它在没有密码的情况下成功,否则它将失败。 </p>
<h3> 不能在最近的<code>sudo</code>命令上以<code>root</code>身份运行的程序,所以不需要密码? </h3>
<p> 这不太可能成功。 目前,大多数操作系统(包括Ubuntu)都默认配置了<code>sudo</code> ,因此其时间戳仅适用于特定的上下文。 </p>
<p> 例如,如果我在一个终端选项卡中运行<code>sudo ...</code>并成功进行身份validation,则另一个选项卡中的<code>sudo</code> (或由不相关的GUI程序运行,或者我从虚拟控制台或SSH会话运行)仍将提示输入密码。 即使它之后立即运行。 </p>
<h3> 以用户X身份运行的程序是否可以访问用户X的密码? </h3>
<p> 没有。 </p>
<h3> 如果恶意程序能够以管理员身份运行,那么当管理员使用<code>sudo</code>或polkit进行身份validation时,它是否无法“监听”所输入的内容? </h3>
<p> 可能,是的。 但是它可以“收听”输入<code>su</code>的密码。 </p>
<h3> 如果我告诉别人我的密码 –  </h3>
<p> 不要告诉别人你的密码。 </p>
<h3> 如果有人必须知道我的密码代表我做某事,但我不想让他们管理系统怎么办? </h3>
<p> 理想情况下,他们应该有一个单独的用户帐户,让他们可以做他们需要做的事情。 例如,可以在帐户之间共享文件,允许多个用户写入文件,同时仍然拒绝访问其他用户。 </p>
<p> 但是,在可能允许不太信任的人共享您的帐户的情况下,它应该是有限的用户帐户。 您可以为此目的创建一个单独的帐户(这是有道理的 – 如果它是您和您希望拥有不同function的其他人的帐户,则应该是另一个帐户)。 </p>
<h3> 那么,最安全的事情是禁止<code>sudo</code>和<code>su</code>并让人们以<code>root</code>身份手动登录吗? </h3>
<p> 不,因为让人们以<code>root</code>身份登录存在严重的缺点。 只要有可能,应尽可能采取尽可能少的行动。 即使大多数与管理系统直接相关的行为(例如,查看用户的配置和阅读日志)通常也不需要<code>root</code>权限。 </p>
<p> 此外,正如<em>潜在</em>的恶意程序可能会在运行<code>sudo</code>或<code>su</code>时查看某人键入的内容,或者创建假的<code>sudo</code> / <code>su</code>密码提示时, <em>潜在</em>的恶意程序也可能会创建虚假的登录屏幕。 </p>
<h2> 是什么让用户成为管理员? </h2>
<p>  <strong>团体会员。</strong> </p>
<p>  在Ubuntu 12.04及更高版本中 ,管理员是名为<code>sudo</code>的组的成员。 </p>
<p>  在Ubuntu 11.10及更早版本中 ,管理员是名为<code>admin</code>的组的成员。 </p>
<p> 当12.04之前的Ubuntu系统升级到12.04或更高版本时, <code>admin</code>组将保持向后兼容性(并继续为其中的用户授予管理权限),但也使用<code>sudo</code>组。 </p>
<h2> 有限的用户帐户 </h2>
<h3> 我可以使用受限用户帐户而不是管理员帐户吗? </h3>
<p> 如果你愿意,当然。 在“ <strong>系统设置”</strong> >“ <strong>用户帐户</strong> <strong>”中</strong>创建受限用户帐户,然后以该用户身份登录。 </p>
<h3> 我可以将我的管理员帐户设为有限的用户帐户吗? </h3>
<p> 是的,只需将其从<code>sudo</code>和<code>admin</code>组中删除(参见上文)。 </p>
<p>  <strong>但您应该确保至少有一个其他管理员帐户,以便您可以管理您的系统。</strong> 如果没有,那么您必须启动到恢复模式或Live CD并再次让某些用户成为管理员 。  (这类似于 重置丢失的管理员密码 。) </p>
<p> 用于管理用户和组的图形工具<em>通常</em>会使您无法创建没有管理员的系统,或者至少警告您。 命令行工具通常不会(相信您知道自己在做什么)。 </p>

</div><!-- #comment-## -->
<div class=

没有一个愚蠢的问题;)

我希望这会澄清一些事情:

在Ubuntu中,可以创建两种不同类型的用户帐户: 标准帐户和管理员帐户。 两者之间的区别:标准帐户不允许通过root访问权对系统进行任何重要更改,而管理员帐户可以使用其密码以root用户身份进行更改。 Root用户本身是系统创建的许多用户之一,您通常不会看到或注意到,并且您无法以其身份登录(默认情况下,无论如何)。 如果您已登录管理员类型帐户,则可以在终端中使用sudo命令成为此Root用户,并且您可以输入密码以安装软件,进行系统更改等。如果您已登录作为标准用户,您无法执行任何操作。

在所有Linux系统中要对系统进行任何更改,我们需要以root用户身份进行身份validation,并应用我们需要成为root用户的所有更改。

普通用户无法在系统范围内应用更改。与Windows相比,这是Linux的优势。

如果进行了任何攻击,那将只会导致Linux / Unix系统中的那个区域因为攻击或修改剩余区域它需要root权限但是在Windows中如果一个地方受到攻击意味着整个系统将受到影响。

这就是为什么只有在许多问题中,如果任何用户没有提示root密码,那么我们会警告他,因为在安全情况下不建议这样做并将选择权交给他们。

如果你想变成root用户,sudo可以帮助你。

 sudo -i 

如果您想以root用户身份启动应用程序,那么您可以sudo。

 sudo  

以非root用户身份运行系统总是更好。

安装期间创建的帐户是管理员帐户

在Ubuntu中,root帐户没有密码,因此您无法root用户身份登录。 有办法绕过这个,但这是默认设置。

Ubuntu中的管理员帐户表示该用户已添加到组sudo ,这使该帐户有资格使用sudo命令临时获得优先权。 PolicyKit可以通过提示“管理员”密码来请求权限提升。 (您需要选择管理员用户,并提供该帐户的密码。)

要确认这些是真的:

  • 打开终端并尝试更新软件包索引。 apt-get update是用于执行此操作的命令,这需要以root身份运行。 它仅在您以root用户身份登录或通过使用权限提升以root身份执行时才有效。 管理员可以通过对sudo机制进行身份validation来运行sudo apt-get update ,该机制允许命令以任何用户身份运行。 不允许标准用户执行此操作。

  • 从“系统设置”中打开用户帐户,然后尝试添加新用户。 PolicyKit使用的保护机制。 管理员将被允许进行身份validation和升级权限,但标准用户将被阻止。 它需要“管理员”密码才能继续。

以下是检查您的帐户是否为管理员的方式:

  • 从系统设置中打开用户帐户。
  • 在左栏中选择您的用户帐户。
  • 您应该在管理员帐户和Standard普通用户的窗格中的帐户名下看到Administrator

没有。

您登录Ubuntu的用户不是admin用户(Linux术语中的admin用户称为root用户)