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

Fir*_*ame 43 root sudo users administrator privileges

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

Eli*_*gan 84

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

当您尝试以 方式执行操作时,Ubuntu 会询问您的密码root,以确保它确实是您本人。

用户帐户:人为,其他

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

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

用户帐户还用于编纂能力和限制集。一些用户帐户——实际上,大多数,除非你有很多机器的人类用户——存在,以便某些程序或命令可以用他们的身份运行,一个具有正确能力和工作限制的身份。

例如,www-data用户存在,因此如果您运行 Web 服务器,它拥有服务器可访问的数据。没有真正的人类用户必须被授权对这些数据进行未经检查的更改,并且 Web 服务器不必被授权执行任何不需要为 Web 服务的操作。因此,与 Web 服务器由拥有 Web 服务器的所有权力(并且 Web 服务器将其权力)具有)。

最重要的非人类用户帐户

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

root允许做任何事情。仍有一些事情root不能做,因为系统本身无法执行或无法理解它们。所以root不能杀死一个处于不间断睡眠状态的进程,或者让一块石头太重而无法移动,然后移动它

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

我可以登录root吗?

可以配置root帐户,以便可以使用密码登录,但默认情况下在 Ubuntu 中未启用此功能。取而代之的是,你能想到的root作为一样www-datalpnobody,和其他非人类的账户。(运行cat /etc/passwdgetent passwd查看它们。)

人类用户使用他们自己的用户帐户登录,然后如果要使用另一个用户帐户执行某些任务,他们会使用该身份执行该任务,而实际上并未以该用户身份登录

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

请注意,虽然root在 Ubuntu 中默认禁用登录身份,但有一些方法可以在root不进行身份验证的情况下获取shell root,这会产生类似的效果:最常见的是sudo -s-i恢复模式类似技术。(如果您不知道这些东西是什么,请不要担心。)这实际上并不是登录:在恢复模式下,您root在任何登录发生之前就已经成为了;使用sudo-based 方法,您只是以 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...
Run Code Online (Sandbox Code Playgroud)

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

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

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

说明需要 sudo 的屏幕截图:管理员只能通过以 <code>root</code> 身份成功运行某些命令,这通常通过在命令前添加 sudo(和一个空格)来完成。
说明需要sudo用于执行管理任务的屏幕截图。(基于“三明治”兰德尔罗。)

须藤,以图形方式

图形程序可以root通过图形前端sudo运行,例如gksu/gksudokdesudo. 例如,为了运行 GParted,root我可以运行gksudo gparted. 然后会以图形方式提示我输入密码。

gksudo 图形密码提示

由于我以图形方式提示,因此不必有终端。这是管理工具作为root.

波尔基特

Polkit(曾经称为 PolicyKit)是管理员以root. 程序访问执行操作的服务。有时,动作是运行整个程序;有时动作更有限。

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

此类实用程序的一个示例是软件中心。它充分利用了 polkit,要求用户只有在他们想做一些需要root特权的事情时才输入他们的密码。(这也可以通过sudo基于 -based 的身份验证实现,但实现起来更难也更难看。)

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

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

polkit 有何不同

任何图形程序可以作为运行rootgksudo和其它图形sudo前端。(该程序可能无法正常工作得非常好,这取决于它是否被设计用来作为root,但启动程序的命令会被执行root。)

虽然 polkit 现在比sudoGUI 前端更常见,因为 Ubuntu 上的应用程序在root幕后执行操作的方式,polki 只会运行图形应用程序,就root 好像有一个配置文件允许它并指示可以执行哪些操作

Polkit,非图形化

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

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

pkexec command...
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

root很特别,因为它可以做任何可以做的事情。但它是一个用户帐户等任何帐户,和运行命令为一体的方式rootsudo(直接地或用图形前端)或polkit可以稍微进行修改,以运行命令的任何其他用户:

sudo -u username command...
Run Code Online (Sandbox Code Playgroud)
gksudo -u username command...
Run Code Online (Sandbox Code Playgroud)
pkexec --user username command...
Run Code Online (Sandbox Code Playgroud)

什么?你sudo先打字?这安全性如何?!

使用 with 运行命令sudo有点像调用papal infalliblity

当您使用sudo[invoke papal infallibility]运行命令时Ubuntu [Catholic people] 会努力确保您真的是您[真正的教皇]。

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

尝试像rootwith sudo(或 polkit)那样做一些事情是一件大事——Ubuntu 不会像您运行程序的所有其他时间一样让它溜走。

系统会提示您输入密码。(然后,您所做的操作会在短时间内被记住,因此您不必在管理系统时不断输入密码。)

除了提醒您要小心之外,这还可以防止两种情况:

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

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

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

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

但是当您像usernamewith一样运行命令时sudo,您需要输入密码。当您像usernamewith一样运行命令时su,您需要输入username密码

由于su进行认证为目标用户,用su你只能运行命令的用户,其帐户被启用

root帐户(如www-datanobody)默认情况下禁用。没有可以作为 登录的密码root。所以你不能su用来运行命令作为root.

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

以访客身份登录时,您根本无法使用su

结合susudo

不是管理员的人甚至可以使用管理员su身份运行sudo。(不过这没关系,因为他们需要管理员的密码才能以管理员身份运行命令。)也就是说,受限用户可以使用surunsudo来运行命令root。这看起来像:

su username -c 'sudo command...'
Run Code Online (Sandbox Code Playgroud)

(以这种方式运行图形程序需要特别小心。)

su命令作为运行命令不是更安全的方式root吗?

可能不是。

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

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

如果以管理员身份运行的程序试图这样sudoroot怎么办?

除非您重新配置sudo使其在没有密码的情况下成功,否则它将失败。

不应该root在最近的sudo命令上运行的程序不能运行,所以不需要密码吗?

这不太可能成功。如今,大多数操作系统(包括 Ubuntu)都sudo默认进行了配置,因此其时间戳仅适用于特定上下文。

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

以用户 X 身份运行的程序不能访问用户 X 的密码吗?

不。

如果恶意程序能够以管理员身份运行,当管理员使用sudopolkit 或 polkit 进行身份验证时,它难道不能“监听”正在键入的内容吗?

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

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

不要告诉别人你的密码。

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

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

但是,在允许不太受信任的人共享您的帐户的情况下,它应该是一个有限的用户帐户。您可以为此目的创建一个单独的帐户(这是有道理的 - 如果它是为您和您想要拥有不同功能的其他人的帐户,则应该是一个不同的帐户)。

因此,将最安全的事情是不允许既sudosu,使人们身份登录root,手动?

不,因为让人们登录存在严重的缺点root。在可能的情况下,应采取尽可能少的行动root。甚至与管理系统直接相关的大多数行为(例如,查看用户的配置和阅读日志)通常也不需要root特权。

此外,正如潜在的恶意程序可以看什么类型的人,当他们运行sudosu,或创建一个假的sudo/su密码提示,潜在恶意程序可以创建一个伪造的登录界面了。

什么使用户成为管理员?

团体会员资格。

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

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

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

有限的用户帐户

我可以使用受限用户帐户而不是管理员帐户吗?

如果你喜欢,当然。在System Settings > User Accounts 中创建一个受限用户帐户,然后以该用户身份登录。

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

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

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

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

  • @FirstNameLastName 在我看来,更好的比喻是:管理员就像布鲁斯韦恩,“root”就像蝙蝠侠。差异完全是构建身份的问题。布鲁斯韦恩可以随时随地成为蝙蝠侠,几乎可以做任何事情,但他永远是面具下的布鲁斯韦恩。尽管如此,蝙蝠侠更像是他的真实身份——布鲁斯韦恩的角色是一种保护他免受蝙蝠侠后果的设计。通过在日常生活中扮演韦恩,他可以经常保护自己和他所爱的人免受自己的错误、系统缺陷和哥谭市的恶意软件的侵害。 (7认同)
  • @EliahKagan-另一个愚蠢的:) 我会打个比方 - Root 就像一个父母,任何用户都像一个孩子。年长的孩子(管理员)有更多的特权。孩子(用户)永远不能是父母(根)。12 岁的孩子可以在家里做非危险的事情(操作系统/Ubuntu),比如使用冰箱之类的东西。不允许他接触保险箱里的钱。但是,18 岁(管理员)可以使用“sudo”或父母的许可来获取这笔钱。但是,两者都不允许在另一个保险箱中接触枪支。只有 root(parent) 可以做到这一点。说得通 ? (2认同)

归档时间:

查看次数:

41562 次

最近记录:

9 年,6 月 前