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


42

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


9
您将rootAdministrator混淆,这是两件事。
fitojb


Windows 7并没有明确区分这一点,这确实使我感到困扰。在Windows中以root身份运行相当于“以管理员身份运行”。但是,当然,如果您以管理员身份登录,那么按照定义,您已经以管理员身份运行所有内容。术语选择真的很差。
克里斯·哈珀

@KrisHarper 它不是定义(甚至true),则用户必须运行的程序作为自己。在Ubuntu中,管理员(不是root用户)可以使用root用户身份运行程序sudo。更一般而言,管理员(或经授权的其他用户)X可以使用来command...作为Y 运行sudo -u Y command...。在Windows Vista和更高版本中,启用UAC后,具有管理权限的用户可以在没有程序的情况下运行程序,除非他们明确授权程序继承其功能。打开UAC时(或针对受限用户),将显示“以管理员身份运行”
伊莱亚·卡根

@EliahKagan当然你是对的。在幕后,用户将获得一个低级别的安全令牌,并在需要时可以请求更高级别的令牌。不过,我从用户体验的角度讲语义。如果我管理一台计算机并正在使用它,我实际上是在以管理员身份运行程序。我的观点是,这是一个较差的术语选择,因为它破坏了物理管理员(我自己)和数字管理员(特定用户帐户)之间的抽象。我发现它是糟糕的UX,即使精通技术的人也会了解发生了什么。
克里斯·哈珀

Answers:


79

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

当您尝试使用时,Ubuntu会要求您输入密码root,以确保它确实是您。

用户帐户:人工帐户,否则

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

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

用户帐户还用于整理功能和限制集。存在一些用户帐户-实际上,除非您有很多人工用户,否则大多数用户帐户都存在-以便某些程序或命令可以其身份运行,该身份具有正确的能力和对工作的限制。

例如,该www-data用户存在,因此,如果您运行Web服务器,则该用户拥有服务器可访问的数据。无需授予真正的人类用户对这些数据进行未经检查的更改的权限,也不必授予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中禁用了as登录,但有一些方法可以获取root不进行身份验证的shell root,这会产生类似的效果:最常见的是sudo -sor-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...

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

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

因为管理员是非常普通的用户,除了用于执行操作的能力root,需要运行一个命令root的权限仍然会失败,当运行命令,除了作为root

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

sudo,以图形方式

图形程序可以root通过诸如/和的图形前端sudo运行。例如,以我可以运行的方式运行GParted 。然后,将以图形方式提示我输入密码。gksugksudokdesudorootgksudo gparted

gksudo图形密码提示

由于系统已提示我,因此不必一定要有终端。这是运行管理工具的一种方式root

波尔基特

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

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

这种实用程序的一个示例是软件中心。它充分利用了polkit的优势,要求用户在想要执行需要root特权的操作时才输入密码。(这也可以通过sudo基于-的身份验证来实现,但是要实现起来更加困难和麻烦。)

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

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

polkit有何不同

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

尽管polkit现在比sudoGUI前端更常见,因为Ubuntu上的应用程序在root后台执行操作,但是polki只会运行图形应用程序,root 就像有一个允许它的配置文件并指出可以执行的操作一样

Polkit,非图形

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

像一样sudopkexec可以运行非图形命令。(并且它不需要配置文件来定义命令的功能-只需将命令运行为即可root。)

pkexec command...

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

(如果没有GUI,例如,如果您是从虚拟控制台或纯文本SSH会话登录的,或者GUI无法正常工作,那么pkexec它将正常降级并在命令行上提示您输入密码)

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

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

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

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

root之所以特别是因为它可以做任何可以做的事情。但这是一个与任何帐户一样的用户帐户,可以稍微修改rootsudo(直接或使用图形前端)或polkit来运行命令的方式,以便以任何其他用户的身份运行命令:

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

什么?您只是sudo先输入?那怎么安全?

使用命令运行sudo有点像调用教皇的错误

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

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

尝试root使用sudo(或polkit)做某事很重要-Ubuntu不仅会像其他所有运行程序一样让幻灯片放过。

提示您输入密码。(然后,您会记住此操作一小段时间,因此在管理系统时不必不断输入密码。)

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

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

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

su以其他用户身份进行身份验证,然后运行命令(或启动交互式外壳程序)。这可能限制被允许使用su,但su与进行身份验证目标帐户的密码,用户的不是密码运行。

例如,以username身份运行,就像。su username -c 'command...'command...sudo -u username command...

但是,当您像username使用命令那样运行命令时sudo,请输入密码。当您与一样运行命令usernamesu,请输入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呢?

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

如果以管理员身份运行的程序尝试执行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使用该组。

受限用户帐户

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

如果您愿意,可以。在系统设置 > 用户帐户中创建一个受限用户帐户,然后以该用户身份登录。

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

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

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

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


2
@ EliahKagan-另一个傻瓜:)我会打个比方-根就像父母,任何用户都像孩子。大一点的孩子(管理员)拥有更多特权。子级(用户)永远不能是父级(根)。12岁的孩子可以在家里(OS / Ubuntu)做一些无危险的事情,例如使用冰箱和其他东西。不允许他安全地触摸这笔钱。但是,年满18岁的管理员(管理员)可以使用“ sudo”或父母的许可来获取这笔钱。但是,不允许两个人都在另一个保险柜中碰枪。只有root(父母)可以做到这一点。说得通 ?
FirstName LastName

1
@FirstNameLastName管理员帐户代表在现实世界中拥有所有权力的真实人类用户。管理员可以root使用sudoand PolicyKit 来“ 做任何事情” 。管理员甚至可以启用该root帐户并登录。如果将用户帐户抽象为机械和有意识的操作的组合,则人类用户既有非人类用户,也包括非人类用户,包括root纯粹的机械行为。如果您了解这一切是如何工作的,那么如果您的类推证明了这一点,那就太好了!但是我不认为它真正抓住了根管理员关系。
伊莱亚·卡根

7
@FirstNameLastName在我看来,更好的比喻是:管理员就像Bruce Wayne一样,root就像Batman一样。区别完全是构建的身份问题。布鲁斯·韦恩(Bruce Wayne)随时随地都可以成为蝙蝠侠,几乎可以做任何事情,但他永远都是布鲁斯·韦恩(Bruce Wayne)的幕后黑手。尽管如此,蝙蝠侠还是他本来的真实人物-布鲁斯·韦恩的性格是一种使他免受成为蝙蝠侠的后果的创造。通过在日常生活中扮演韦恩,他经常可以保护自己和亲人免受自己的错误,系统缺陷和哥谭市的恶意软件的侵害。
伊利亚·卡根

4

没有愚蠢的问题;)

我希望这可以澄清一些事情:

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


如果管理员可以仅通过运行命令就可以成为root用户,那么其他人/黑客可以远程运行它并成为root用户吗?
FirstName LastName

@FirstNameLastName他们需要已经以其他用户之一的身份远程登录才能运行sudo
Izkata

@FirstNameLastName还会在授予root用户访问权限之前sudo要求提供帐户名和密码。
Destrictor

@Destrictor-是的。实际上,这就是令我困惑的地方。我在一个管理员帐户中,并使用管理员密码登录到root用户。当admin和root的密码和用户名相同时,为什么要有两个帐户?
FirstName LastName

@FirstNameLastName使用sudo时需要输入密码的主要原因是用于记录日志。这主要是出于安全原因(发生了某些事情,您的IT部门正在查找谁/什么/在哪里)
Destrictor 2013年

3

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

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

如果进行了任何攻击,那么这将仅扩展到Linux / Unix系统中的该区域,因为要攻击或修改其余区域,它需要root权限,但是在Windows中,如果某个位置受到攻击,则意味着整个系统都将受到影响。

这就是为什么只有在许多问题中,如果有任何用户不要求输入root密码的提示,那么我们会警告他,因为在安全情况下不建议这样做,而是由他们自己决定。

如果您想成为root用户,sudo可以为您提供帮助。

sudo -i 

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

sudo <app_name>

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


3

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

在Ubuntu中,root帐户没有密码,因此,您无法root用户身份登录。有许多方法可以避免此情况,但这是默认设置。

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

要确认这些是真的:

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

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

这是检查帐户是否为管理员的方法:

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

2

没有。

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


6
这充其量是一种误导。安装期间创建的非root用户管理员。不是根用户,但管理员(意思,主要是,它们可以作为执行的操作rootsudo和PolicyKit的)。
Eliah Kagan

@EliahKagan-好的,那么管理员帐户和root帐户有什么区别?我是Linux和计算机科学的新手,所以请忍受我。
FirstName LastName

@EliahKagan并非如此,这只是试图将Windows术语应用于linux。 sudo您可以通过尝试以root用户身份运行的程序来限制访问权限,这会使它变得更加模糊。
2013年

@FirstNameLastName有一个实际名为“ root”的用户(通常;我听说它可以更改,但我不知道如何)。它可以访问所有内容。
2013年

2
@Izkata 不,管理员在Ubuntu中具有特定含义。它只是完全不正确地说,在安装过程中创建的用户帐户不是管理员。至于允许特定命令的运行rootsudo,那是无关紧要的。管理员可以运行任何的命令rootsudo。默认情况下,没有其他人可以使用root(或任何其他用户)运行任何命令sudo。而且,sudo这只是一种以root身份执行操作的机制- sudo如今,人们倾向于认为实际上通常是PolicyKit。
伊利亚·卡根
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.