title: Root User in Ubuntu author: Gamehu tags: - Linux - '' categories: - 学习 date: 2020-02-13 21:20:00 --- 话说从接触Linux那一天起,就有一种独领风骚的傲气,命令走天下的这种霸气,那时候感觉精通Linux的连女朋友都带光环。 我最开始接触Linux是从Ubuntu开始,当时笔记本装了双系统,我就鼓捣了一个Ubuntu,现在用的较多的CentOS,首先入门都是先从了解root开始,我其实一直对root很好奇,刚好今天看到twitter上ruanyf大佬推了一篇文章[Root User in Ubuntu: Important Things You Should Know](https://itsfoss.com/root-user-ubuntu/)讲基于Ubuntu的root的文章,基础好用,我们现在做的产品的安装包刚好也是基于Ubuntu做的,所以更有必要在此做个中文版记录。 ## 开始 文章主要讲了以下四块: 1. 为什么在Ubuntu中禁用root用户 2. 以root身份使用命令 3. 切换到root用户 4. 解锁root用户 ### 什么是root用户?为什么将其锁定在Ubuntu中? ![根用户Ubuntu](https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/01/root_user_ubuntu.png?ssl=1) 稍微了解Linux的都知道,在Linux中,有一个称为[root](http://www.linfo.org/root.html)的超级用户。这是超级管理员帐户,可以使用系统执行任何操作。它可以访问任何文件并在Linux系统上运行任何命令。 拥有权利的同时也被赋予了重大的责任。超级用户可以为您提供对系统的完全控制权,因此也格外谨慎。超级用户可以访问系统文件并运行命令来更改系统配置。因此,错误的命令可能会造成无法挽回的损失,比如网上老说的一个梗:当rm -rf 之后我跑路了。所以一般情况下都不会给root权限,管理员会分配部分权限建对应的用户供对应的人使用。 这也说明了为什么[Ubuntu](https://ubuntu.com/)默认情况下锁定了root用户,就是为了避免意外灾难。 您无需具有root特权即可执行日常任务,例如将文件移动到主目录中,从Internet下载文件,创建文档等。 ***以此类比更好地理解它。如果必须切水果,可以使用菜刀。如果必须砍伐树木,则必须使用锯。现在,您可以使用锯切水果,但这不明智,是吗?\*** 这是否意味着您不能成为Ubuntu的root用户或无法使用具有root用户特权的系统?不,您仍然可以在“ sudo”的帮助下获得root用户访问权限(在下一节中说明)。 > 重点: > > 用户功能强大,无法用于常规任务。这就是为什么不建议始终使用root的原因。您仍然可以使用root运行特定命令。 ### 如何在Ubuntu中以root用户身份运行命令? ![须藤三明治xkcd](https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/01/sudo_sandwich.png?ssl=1)图片来源:[xkcd](https://xkcd.com/149/) 当你需要某些系统特定任务的root特权。例如,如果要[通过命令行更新Ubuntu](https://itsfoss.com/update-ubuntu/),则不能以常规用户身份运行该命令。会有以下类似的错误。 ``` 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。 ``` sudo apt update ``` Ubuntu和许多其他Linux发行版使用一种称为sudo的特殊机制。Sudo是一个程序,用于以root(或其他用户)身份控制对运行命令的访问。 Sudo实际上是一个多功能的工具。可以将其配置为允许用户以root用户身份运行所有命令。您可以配置它仅以root身份运行选定的几个命令。您也可以配置为[不带密码运行sudo](https://linuxhandbook.com/sudo-without-password/)。 [在安装Ubuntu时](https://itsfoss.com/install-ubuntu/),必须创建一个用户帐户。该用户帐户在您的系统上以管理员身份运行,并且按照Ubuntu中的默认sudo策略,它可以使用root特权在系统上运行任何命令。 运行**sudo不需要root密码,但需要用户自己的password**。 这就是为什么当使用sudo运行命令时,总会一开始就询问密码: ``` 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: ``` sudo -i gamehu@nuc:~$ sudo -i [sudo] password for gamehu: root@nuc:~# whoami root root@nuc:~# ``` 您会注意到,切换到root用户时,shell命令提示符将从$(美元键符号)更改为#(磅键符号)。 ***尽管已向您展示了如何成为root用户,但我必须警告你,应避免将系统用作root用户。毕竟出于某种原因,我们不建议这样做。\*** 临时切换到root用户的另一种方法是使用su命令: ``` sudo su ``` 如果您尝试在不使用sudo的情况下使用su命令,则会遇到“ su身份验证失败”错误。 您可以使用exit命令恢复为普通用户。 ``` exit ``` ### 如何在Ubuntu中启用root用户? 到目前为止,您已经知道默认情况下,root用户在基于Ubuntu的发行版中被锁定。 Linux使您可以自由地对系统进行任何操作。解锁root用户是这些自由之一。 如果出于某种原因决定启用root用户,则可以通过为它设置密码来启用它: ``` sudo passwd root ``` 同样,不建议这样做,我也不鼓励您在桌面上执行此操作。如果忘记了密码,将无法再次[在Ubuntu中更改root密码](https://itsfoss.com/how-to-hack-ubuntu-password/)。 您可以通过删除密码来再次锁定root用户: ``` sudo passwd -dl root ```