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

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

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

答案1

您是管理员,但不是rootroot用户可以执行任何操作。管理员可以执行操作root,但通常管理员的工作不是由 完成的root。这样,您就可以完全控制自己的系统,但前提是您选择使用它。

当您尝试执行操作时,Ubuntu 会要求您输入密码root,以确保您的身份。

用户账户:人性化及其他

真正的人类用户有代表他们的用户账户。你在安装 Ubuntu 时创建了一个这样的账户。但是并非所有用户帐户都代表真实的人类用户

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

用户帐户还用于规范一系列能力和限制。一些用户帐户——实际上大多数用户帐户,除非您拥有许多机器的人类用户存在的目的是为了能够以他们的身份运行某些程序或命令,而这种身份拥有适合该工作的能力和限制。

例如,www-data用户的存在意味着如果您运行 Web 服务器,则用户拥有服务器提供的数据。没有真正的人类用户有权对这些数据进行未经检查的更改,并且 Web 服务器也不必被授权执行任何对 Web 服务不必要的操作。因此,与由拥有 Web 服务器所有权限(并且 Web 服务器拥有其权限)的某个人类用户运行 Web 服务器相比,Web 数据和系统的其余部分都更安全,不会受到意外或故意破坏。

最重要的非人类用户账户

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

root允许做任何事情。仍然有一些事情root无法完成,因为系统本身无法执行或理解它们。所以root不能终止进程不间断睡眠, 或者制造一块太重而无法移动的石头,然后移动它

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

我可以用 身份登录吗root

可以配置帐户root,以便使用密码登录,但 Ubuntu 默认不启用此功能。相反,您可以将 视为rootwww-datalpnobody其他非人类帐户。(运行cat /etc/passwdgetent passwd以查看所有帐户。)

人类用户使用自己的用户帐户登录,然后,如果要使用另一个用户帐户执行某项任务,他们以该身份执行该任务,实际上并没有登录就像那个用户一样。

可以配置其他非人类用户,例如www-data,这样也可以以他们的身份登录。不过,这种情况很少见,而在其他一些类 Unix 操作系统中,以root 在终端. 以 运行整个图形界面的风险root,加上许多图形程序并非设计为以 运行root且可能无法正常工作,意味着您永远不应尝试获取root-owned桌面会话

root请注意,虽然Ubuntu 默认禁用以 身份登录,但有一些方法可以root在不进行身份验证的情况下获取 shell root,其效果类似:最常见的是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

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

须藤

在命令行上,我通常会使用sudo运行以下命令root

sudo command...

这将促使我我的密码。(不是root的密码;root没有密码。)

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

因为管理员完全是普通用户除了执行需要权限的root命令root仍然会失败,除非命令运行时作为root

屏幕截图说明了 sudo 的必要性:管理员只有以 <code>root</code> 身份才能成功运行某些命令,这通常是通过在命令前面添加 sudo(和空格)来完成的。
屏幕截图显示了执行管理任务需要使用的内容sudo。(基于“三明治”经过兰德尔·芒罗

sudo,图形化

图形程序可以root运行图形前端sudo, 例如gksu/gksudokdesudo。例如,要运行 GParted,root我可以运行gksudo gparted。然后系统将以图形方式提示我输入密码。

gksudo 图形密码提示

由于我是通过图形方式提示的,所以不需要终端。这是以 身份运行管理工具的方法之一root

波尔基特

波尔基特(曾称为 PolicyKit)是管理员执行操作的另一种方式root。程序访问执行操作的服务。有时,操作是运行整个程序;有时操作更有限。

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

此类实用程序的一个例子是软件中心。它充分利用了 polkit,要求用户输入密码仅有的当他们想要做一点事这需要root特权。(使用基于的身份验证也可以实现这一点sudo,但实现起来更困难,也更不美观。)

在软件中心,我可以找到并阅读有关应用程序的信息;然后当我想要安装它时,系统会要求我输入密码。

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

polkit 有何不同

任何图形程序都可以像其他图形前端root一样运行。(该程序可能不gksudosudo工作很好,这取决于它是否设计为root。但启动程序的命令将作为 执行root。)

虽然 polkit 现在比 GUI 前端更常见,因为 Ubuntu 上的应用程序在后台sudo执行操作,但 polki 只会运行图形应用程序rootroot 是否有配置文件允许它并指示可以执行哪些操作

Polkit,非图形化

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

喜欢sudopkexec可以运行非图形命令。(并且它不需要定义命令功能的配置文件 - 它只是将命令作为运行root。)

pkexec command...

pkexecgksudo以图形方式提示输入密码,即使它是从终端运行的(这是它的行为与直接运行更相似的方式之一sudo)。

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

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

一旦身份验证成功完成,命令就会在终端中运行。

成功通过 polkit 身份验证后,命令将以 <code>root</code> 身份无缝运行。

以其他用户身份运行命令root

rootroot很特别,因为它可以做任何可以做的事情。但它是一个用户帐户,就像任何帐户一样,并且可以稍微修改使用(直接或使用图形前端)或 polkit运行命令的方式,sudo以像任何其他用户一样运行命令:

sudo -u username command...
gksudo -u username command...
pkexec --user username command...

什么?你先打字sudo?这样安全吗?!

运行命令有点sudo像调用教皇无误论

当你运行命令sudo[援引教皇的绝对正确性]Ubuntu[天主教徒]尽力确保你真的吗[确实是教皇]

是的,我知道教皇的无误性(即使是规范性的)是声明性的;这种类比并不完美。

root尝试使用(或 polkit) 来做某事sudo是一件大事 - Ubuntu 不会像您运行其他程序时那样让它溜走。

系统会提示您输入密码。(然后,您的输入信息会被短暂记住,因此您在管理系统时无需不断输入密码。)

除了提醒你要小心,这可以防止两种情况:

  • 有人使用您的计算机(或移动设备),可能是以查看电子邮件或类似无害目的为幌子。在这种情况下,他们仍有可能造成一些危害——例如,他们可以修改或删除您的文档。但是,他们无法管理系统,因为他们无法输入您的密码。
  • 除非您输入密码,否则不应该管理系统的程序无法执行此操作。例如,如果您的 Web 浏览器受到安全漏洞的攻击并运行恶意代码,它仍然无法执行管理任务。它无法创建和删除用户,无法修改已安装的程序root(包括由软件包管理器安装的任何程序,例如 LibreOffice),也无法在深层次上更改系统。

我听说过su。那是什么?我可以用它吗?

su以另一个用户的身份进行身份验证,并运行命令(或启动交互式 shell)。可以限制WHO允许使用su,但su需要进行身份验证目标账户的密码,而不是运行用户的密码。

例如,运行su username -c 'command...'command...作为用户名, 就像。sudo -u username command...

但是当你运行以下命令时username使用sudo,你输入你的密码. 当您运行以下命令时username使用su,你输入username的密码

由于su执行身份验证对于目标用户su你只能以用户身份运行命令已启用其帐户

账户root(如www-datanobody)默认处于禁用状态。没有密码可用于以 身份登录root。因此您无法使用su以 身份运行命令root

用来su以另一个可以登录的用户身份运行命令(通常包括系统上代表人类的所有用户帐户)。

当以游客身份登录时,根本无法使用su

结合susudo

非管理员用户甚至可以使用以管理员身份su运行sudo。(不过这没问题,因为他们需要管理员密码才能以管理员身份运行命令。)也就是说,受限用户可以使用 以su身份sudo运行命令root。如下所示:

su username -c 'sudo command...'

(以这种方式运行图形程序需要特别照顾

su运行命令的方式难道不是更安全吗root

可能不会。

如果不允许用户充当 该怎么办root

使他们成为受限用户而不是管理员。

如果以管理员身份运行的程序尝试sudo执行此操作会怎样root

除非您重新配置sudo以使其无需密码即可成功,否则它将会失败。

难道不应该root借助最近的sudo命令来运行程序,所以不需要密码吗?

这不太可能成功。如今,大多数操作系统(包括 Ubuntu)都sudo默认配置了时间戳仅适用于特定环境。

例如,如果我sudo ...在一个终端选项卡中运行并成功验证,则sudo在另一个选项卡中(或由不相关的 GUI 程序运行,或者我从虚拟控制台或 SSH 会话运行)仍会提示输入密码。即使它随后立即运行。

以用户 X 身份运行的程序是否有权访问用户 X 的密码?

不。

如果恶意程序能够以管理员身份运行,那么它能否“监听”管理员使用sudopolkit 进行身份验证时输入的内容?

有可能,是的。但是它可能会“监听”输入的密码su

如果我告诉别人我的密码——

不要告诉别人你的密码。

如果有人需要知道我的密码才能代表我做某事,但我不想让他们管理系统,该怎么办?

理想情况下,他们应该拥有一个单独的用户帐户,以便他们做自己需要做的事情。例如,可以在帐户之间共享文件,允许多个用户写入文件,同时仍然拒绝其他用户的访问。

但是,如果允许不太信任的人共享您的帐户,则应将其设置为受限用户帐户。您可以为此目的创建一个单独的帐户(这样做很有意义 - 如果您希望该帐户属于您和您希望拥有不同功能的其他人,则应将其设置为不同的帐户)。

那么,最安全的做法是不是就是禁止和sudosu并让人们手动以身份登录root

不,因为让人们以 身份登录会带来严重的弊端root。只要有可能,就应该以 身份执行尽可能少的操作root。甚至大多数与管理系统直接相关的操作(例如,查看配置了哪些用户以及阅读日志)通常也不需要root特权。

此外,正如潜在恶意程序可以监视某人在运行sudo或输入的内容su,或创建虚假的sudo密码su提示,潜在恶意程序也可能创建虚假的登录屏幕。

什么使用户成为管理员?

团体成员。

在 Ubuntu 12.04 及更高版本中,管理员是名为 的组的成员sudo

在 Ubuntu 11.10 及更早版本中,管理员是名为 的组的成员admin

当 12.04 之前的 Ubuntu 系统升级到 12.04 或更高版本时,该admin组将保留以实现向后兼容(并继续授予其中的用户管理权力),但该sudo组也会被使用。

受限用户帐户

我可以使用受限用户帐户代替管理员帐户吗?

如果你喜欢,当然可以。在系统设置>用户帐户并以该用户身份登录。

我可以将我的管理员帐户设为受限用户帐户吗?

是的,只需将其从sudoadmin组中删除即可(参见上文)。

但您应该确保至少有一个其他管理员帐户,以便您可以管理系统。如果没有,那么您必须启动到恢复模式或实时 CD,然后再次让某个用户成为管理员。 (这很相似重置丢失的管理员密码

用于管理用户和组的图形工具将通常阻止您创建没有管理员的系统,或者至少警告您。命令行工具通常不会这样做(相信您知道自己在做什么)。

答案2

不存在愚蠢的问题 ;)

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

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

答案3

在所有 Linux 系统中,要对系统进行任何更改,我们都需要以 root 用户身份进行身份验证,并且要应用所有更改,我们也需要以 root 用户身份进行验证。

普通用户无法在整个系统范围内应用更改。这是 Linux 相对于 Windows 的优势。

如果发生任何攻击,那么这将仅仅源于 Linux/Unix 系统中的该区域,因为攻击或修改其余区域需要 root 权限,但在 Windows 中,如果一个地方受到攻击意味着整个系统都会受到影响。

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

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

sudo -i 

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

sudo <app_name>

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

答案4

不。

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

相关内容