Root User in Ubuntu

话说从接触Linux那一天起,就有一种独领风骚的傲气,命令走天下的这种霸气,那时候感觉精通Linux的连女朋友都带光环。

我最开始接触Linux是从Ubuntu开始,当时笔记本装了双系统,我就鼓捣了一个Ubuntu,现在用的较多的CentOS,首先入门都是先从了解root开始,我其实一直对root很好奇,刚好今天看到twitter上ruanyf大佬推了一篇文章Root User in Ubuntu: Important Things You Should Know讲基于Ubuntu的root的文章,基础好用,我们现在做的产品的安装包刚好也是基于Ubuntu做的,所以更有必要在此做个中文版记录。

开始

文章主要讲了以下四块:

  1. 为什么在Ubuntu中禁用root用户
  2. 以root身份使用命令
  3. 切换到root用户
  4. 解锁root用户

什么是root用户?为什么将其锁定在Ubuntu中?

根用户Ubuntu

稍微了解Linux的都知道,在Linux中,有一个称为root的超级用户。这是超级管理员帐户,可以使用系统执行任何操作。它可以访问任何文件并在Linux系统上运行任何命令。

拥有权利的同时也被赋予了重大的责任。超级用户可以为您提供对系统的完全控制权,因此也格外谨慎。超级用户可以访问系统文件并运行命令来更改系统配置。因此,错误的命令可能会造成无法挽回的损失,比如网上老说的一个梗:当rm -rf 之后我跑路了。所以一般情况下都不会给root权限,管理员会分配部分权限建对应的用户供对应的人使用。

这也说明了为什么Ubuntu默认情况下锁定了root用户,就是为了避免意外灾难。

您无需具有root特权即可执行日常任务,例如将文件移动到主目录中,从Internet下载文件,创建文档等。

*以此类比更好地理解它。如果必须切水果,可以使用菜刀。如果必须砍伐树木,则必须使用锯。现在,您可以使用锯切水果,但这不明智,是吗?*

这是否意味着您不能成为Ubuntu的root用户或无法使用具有root用户特权的系统?不,您仍然可以在“ sudo”的帮助下获得root用户访问权限(在下一节中说明)。

重点:

用户功能强大,无法用于常规任务。这就是为什么不建议始终使用root的原因。您仍然可以使用root运行特定命令。

如何在Ubuntu中以root用户身份运行命令?

须藤三明治xkcd图片来源:xkcd

当你需要某些系统特定任务的root特权。例如,如果要通过命令行更新Ubuntu,则不能以常规用户身份运行该命令。会有以下类似的错误。

1
2
3
4
5
6
apt update
Reading package lists... Done
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)

那么,这个时候怎么做呢?简单的答案是在需要以root身份运行的命令之前添加sudo。

1
sudo apt update

Ubuntu和许多其他Linux发行版使用一种称为sudo的特殊机制。Sudo是一个程序,用于以root(或其他用户)身份控制对运行命令的访问。

Sudo实际上是一个多功能的工具。可以将其配置为允许用户以root用户身份运行所有命令。您可以配置它仅以root身份运行选定的几个命令。您也可以配置为不带密码运行sudo

在安装Ubuntu时,必须创建一个用户帐户。该用户帐户在您的系统上以管理员身份运行,并且按照Ubuntu中的默认sudo策略,它可以使用root特权在系统上运行任何命令。

运行sudo不需要root密码,但需要用户自己的password

这就是为什么当使用sudo运行命令时,总会一开始就询问密码:

1
2
gamehu@nuc:~$ sudo apt update
[sudo] password for gamehu:

如您在上面的示例中看到的,用户gamehu试图使用sudo运行’apt update’命令,系统要求输入gamehu的密码。

要注意当您开始在终端中输入密码时,屏幕上什么都没有发生不会有任何显示,也没有所谓的删除键、退格键…这里会记录你按下的所有键。因为作为默认安全功能,屏幕上不显示任何内容。甚至没有星号(*)。您输入密码,然后按Enter。*

划重点:

要在Ubuntu中以root身份运行命令,请在命令前添加sudo。
当要求输入密码时,输入您的帐户密码。
在屏幕上键入密码时,看不到任何内容。只需继续正确的输入密码,然后按Enter。

如何在Ubuntu中成为root用户?

你可以使用sudo以root身份运行命令。但是,在某些情况下,您必须以root用户身份运行多个命令,则可以临时切换为root用户。

sudo命令允许您使用以下命令模拟root登录shell:

1
2
3
4
5
6
sudo -i
gamehu@nuc:~$ sudo -i
[sudo] password for gamehu:
root@nuc:~# whoami
root
root@nuc:~#

您会注意到,切换到root用户时,shell命令提示符将从$(美元键符号)更改为#(磅键符号)。

*尽管已向您展示了如何成为root用户,但我必须警告你,应避免将系统用作root用户。毕竟出于某种原因,我们不建议这样做。*

临时切换到root用户的另一种方法是使用su命令:

1
sudo su

如果您尝试在不使用sudo的情况下使用su命令,则会遇到“ su身份验证失败”错误。

您可以使用exit命令恢复为普通用户。

1
exit

如何在Ubuntu中启用root用户?

到目前为止,您已经知道默认情况下,root用户在基于Ubuntu的发行版中被锁定。

Linux使您可以自由地对系统进行任何操作。解锁root用户是这些自由之一。

如果出于某种原因决定启用root用户,则可以通过为它设置密码来启用它:

1
sudo passwd root

同样,不建议这样做,我也不鼓励您在桌面上执行此操作。如果忘记了密码,将无法再次在Ubuntu中更改root密码

您可以通过删除密码来再次锁定root用户:

1
sudo passwd -dl root