标签 Root 下的文章

默认情况下,Ubuntu 禁用了 root 账户。你必须使用 sudo 命令来执行任何需要 root 权限的任务。

当然,这是为了你自己的安全。一直以 root 身份使用系统,就像手里拿着一把剑到处跑。它增加了把事情搞乱的机会。

以 root 身份登录在服务器中仍然很常见。在桌面方面,以 root 身份登录的情况相当少见。甚至 Kali Linux 也做了改变。

然而,有一些桌面用户想以 root 身份登录。这不是什么明智之举,但肯定是可以做到的。

在本指南中,我将向你展示如何在 Ubuntu 中 以 root 身份登录 GNOME 桌面

如何在 GNOME 桌面上以 root 身份登录

? 我不建议在桌面上以 root 身份登录。你有 sudo 机制来满足你所有的 root 需求。只有在你有足够理由的情况下才这样做。本教程仅用于演示目的。你已经被警告过了。

步骤 1:启用 root 账户

你想以 root 身份登录。但默认情况下,root 账户是禁用的。第一步是启用它。

改变 root 账户的密码,这将为你启用 root 账户:

sudo passwd root

change the password of root account in ubuntu

不言而喻,你不应该忘记 root 密码。

步骤 2:改变 GDM 配置

? 本教程的这一部分只对 GNOME 有效。请 检查你的桌面环境 并确保它是 GNOME。

Ubuntu 默认使用 GNOME,GNOME 使用 GDM 显示管理器。

为了允许以 root 身份登录到 GNOME,你需要对位于 /etc/gdm3/custom.conf 的 GDM 配置文件做一些修改。

对该配置文件做一个备份:

cp /etc/gdm3/custom.conf /etc/gdm3/custom.conf~

在最坏的情况下,如果你以某种方式把事情搞砸了,备份的文件可以用来从 TTY 上替换现有文件。

现在,用以下命令打开 GDM 文件:

sudo nano /etc/gdm3/custom.conf

并添加以下一行,允许 root 用户登录:

AllowRoot=true

configure GDM on ubuntu

Ctrl+X 退出 Nano,同时保存它。

步骤 3:配置 PAM 认证

现在,你必须配置 PAM 认证守护进程文件,它可以通过以下命令打开:

sudo nano /etc/pam.d/gdm-password

在这个文件中,你必须注释掉以下带有 # 号的一行,该符号拒绝 GUI 中的 root 访问:

auth   required        pam_succeed_if.so user != root quiet_success

保存修改并退出 nano 文本编辑器。

步骤 4:以 root 身份登录

现在,重启你的系统:

reboot

在登录界面,选择 Not listed 选项,在用户名中输入 root,并输入你在本指南开头配置的密码:

Login as a root in ubuntu desktop

当你登录后,它就会通知你,“logged in as a privileged user”

logged in as a privileged user in Ubuntu

这就完成了! 现在,你正在以 root 身份运行你的 Ubuntu 系统。

以 root 用户身份运行系统时,你应该知道的事情

Ubuntu 默认禁用 root 账户是有原因的。想知道为什么吗?在这里你可以找到:

Ubuntu 中的 root 用户-你应该知道的重要事项

再说一遍,在你的桌面 Linux 系统中以 root 登录是不可取的。请遵守规范,远离这种(错误的)冒险。


via: https://itsfoss.com/ubuntu-login-root/

作者:Sagar Sharma 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文将比较非 root 用户提权为 root 用户的两个 Linux 命令 的区别。

susudo 命令都允许用户执行非特权用户不允许做的系统管理任务,即只有 root 用户能执行的命令。有些人更喜欢 sudo 命令:例如 Seth Kenlon 最近发布的一篇 《在 Linux 上使用 sudo 的 5 个理由》,他在其中详细阐述了 sudo 命令的许多优点。

但是,相较于 sudo 命令,我更偏好于 su 命令 来做系统管理工作。在本文中,我比较了这两个命令的区别,并解释了为什么我更喜欢 su 而不是 sudo,但我仍然同时使用这两个命令的原因。

过去的系统管理员主要使用 su 命令

susudo 命令是为不同的世界设计的。早期的 Unix 计算机需要全职系统管理员,他们使用 root 用户作为唯一的管理帐户。在这个古老的世界里,有管理员密码的人会在电传打字机或 CRT 终端(例如 DEC VT100)上以 root 用户登录,然后执行一些管理 Unix 计算机的工作。

管理员还会有一些非 root 帐户,用于执行一些非 root 的任务,例如编写文档和管理电子邮件等。在这些 Unix 计算机上通常有许多非 root 帐户,他们都不需要完全的 root 访问权限,只需要以 root 权限运行很少的命令,大约 1 至 2 个就可以了。许多系统管理员以 root 用户登录,完成 root 工作,并在任务完成后,退出 root 会话。有时候,系统管理员需要整天以 root 用户来登录,因为 sudo 命令需要键入更多的内容才能运行必要的命令,因此大多数系统管理员很少使用 sudo 命令。

sudosu 这两个命令都能够提权为 root 用户,但它们实现的方式大不相同。这种差异是由于它们最初打算用于不同的情况

sudo 命令

sudo 命令的初衷是让 root 用户能够让几个非 root 用户访问他们经常需要的一两个特权命令。sudo 命令允许非 root 用户暂时地获得更高权限,来执行一些特权命令,例如添加和删除用户、删除属于其他用户的文件、安装新软件以及管理现代 Linux 主机所需的任何命令。

sudo 命令允许非 root 用户访问一两个 需要更高权限 的常用命令,这样可以帮助系统管理员节省来自用户的许多请求,并减少等待时间。sudo 命令不会将用户帐户切换为 root 用户,因为大多数非 root 用户永远不应该拥有完全的 root 访问权限。在大多数情况下,sudo 允许用户执行一两个命令,然后提权就会过期。在这个通常为 5 分钟的短暂的提权时间内,用户可以执行任何需要提权的管理命令。需要继续使用提权的用户可以运行 sudo -v 命令来重新验证 root 访问权限,并将提权时间再延长 5 分钟。

使用 sudo 命令还有一些副作用,例如生成非 root 用户使用命令的日志条目及其 ID。这些日志可以在之后作为出现问题的检验,来给用户更多的操作培训。(你以为我会说“问责”用户,对吧?)

su 命令

su 命令能够将非 root 用户提权到 root 权限 —— 事实上,能让非 root 用户成为 root 用户。唯一的要求是用户知道 root 密码。因为用户已经以 root 权限登录,所以之后的操作就没有限制了。

su 命令所提供的提权没有时间限制。用户可以作为 root 执行命令,不需要进行重新验证是否有 root 权限。完成任务后,用户可以执行退出命令 exit,从 root 用户恢复到自己原来的非 root 帐户。

su 和 sudo 在使用上的争议和变化

最近在 susudo 的使用上存在一些分歧。

真正的系统管理员不会使用 sudo。—— Paul Venezia

Venezia 在他的 InfoWorld 文章 中辩称,对于许多担任系统管理员的人来说,sudo 是一个不必要的工具。他没有花太多时间为这个观点进行解释,他只是把它说成了一个事实。我同意他对于系统管理员的观点,因为我们不需要 sudo 来完成我们的工作。事实上,sudo 使得事情变得更复杂了。

然而,

时代在“改变”。—— Bob Dylan

Bob Dylan 是对的,尽管他唱的歌不是指计算机(LCTT 译注:Bob Dylan 是美国创作歌手、艺术家和作家,这里指他不是针对于电脑而说的)。

自从人手一台的个人计算机时代到来,计算机的管理方式发生了重大变化。在许多环境中,计算机的使用者也是它的管理员,这使得为这些用户提供一些对 root 权限的访问是有必要的。

一些现代发行版,例如 Ubuntu 及其衍生版本,只能使用 sudo 命令来执行特权命令。在这些发行版中,用户无法直接以 root 用户身份登录,甚至无法通过 su 切换到 root,因此需要 sudo 命令来允许非 root 用户获得 root 权限。在这一环境中,所有系统管理任务均使用 sudo 来执行。

通过锁定 root 帐户并将常规用户帐户添加到“轮子”组(wheel),可以实现此配置,但是这种配置很容易被绕过。接下来,让我们在 Ubuntu 主机或虚拟机上尝试一些小实验吧。我在这里说明一些我的设置,以便你可以根据需要来重现它。我安装的是 Ubuntu 16.04 LTS1,并使用 VirtualBox 将其安装在虚拟机中。在安装过程中,我创建了一个非 root 用户 student,为了简便起见我给这个用户设置了一个简单的密码。

student 用户身份登录 Ubuntu,并打开终端。查看 /etc/shadow 文件中的 root 条目,其中存储了经哈希的密码。

student@ubuntu1:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied

可以看到终端拒绝了我们对 /etc/shadow 的访问,因此我们无法查看 /etc/shadow 文件。所有发行版都是如此,以防止非特权用户看到和访问加密的密码,因为非特权用户可能会使用常见的黑客工具来破解这些密码。

现在,让我们使用 su - 命令来成为 root 用户。

student@ubuntu1:~$ su -
Password: <Enter root password – but there isn't one>
su: Authentication failure

认证失败的原因是因为 root 帐户没有密码、并且被锁定了。接下来,使用 sudo 命令查看 /etc/shadow 文件。

student@ubuntu1:~$ sudo cat /etc/shadow
[sudo] password for student: <enter the student password>
root:!:17595:0:99999:7:::
<截取>
student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7:::
<截取>

在这里,我仅截取了部分结果,只显示 root 和 student 用户的条目。我还缩短了加密密码,以便该条目能显示在一行中。各个字段以冒号(:)分隔,第二个字段是密码。请注意,root 的密码字段是一个感叹号(!),这表明 root 帐户已被锁定,且无法使用。

现在,要将 root 帐户变成一个合适的系统管理员,你只需为 root 帐户设置密码。

student@ubuntu1:~$ sudo su -
[sudo] password for student: <Enter password for student>
root@ubuntu1:~# passwd root
Enter new UNIX password: <Enter new root password>
Retype new UNIX password: <Re-enter new root password>
passwd: password updated successfully
root@ubuntu1:~#

现在,你可以直接以 root 身份登录到控制台,或者直接使用 su 登录到 root,而不是在每个命令前都加一个 sudo。当然,你也可以在每次想以 root 身份登录时,使用 sudo su -,但这又是何必呢?

请不要误解我的意思。像 Ubuntu 这样的发行版及其上下游衍生版非常好,多年来我已经使用了其中的几个。在使用 Ubuntu 和相关发行版时,我做的第一件事就是设置一个 root 密码,这样我就可以直接以 root 身份登录。其他发行版,如 Fedora 及其相关发行版,现在在安装过程中提供了一些有趣的选择。我注意到的第一个 Fedora 版本是 Fedora 34,我在写我的一本即将出版的书时安装了很多次。

在安装页面上,可以找到其中一个安装选项,来设置 root 密码。这个新选项允许用户选择“ 锁定 root 帐户 Lock root account ”,就像 Ubuntu 锁定 root 帐户的方式一样。此页面上还有一个选项,允许使用密码以 root 身份远程 SSH 登录到此主机,但这仅在 root 帐户解锁时有效。第二个选项位于允许创建非 root 帐户的页面上。此页面上的选项之一是“ 让此用户成为管理员 Make this user administrator ”。选中此选项后,用户 ID 将添加到一个名为 wheel 组的特殊组中,该组授权该组的成员使用 sudo 命令。Fedora 36 甚至在该复选框的描述中提到了 wheel 组。

可以将多个非 root 用户设置为管理员。使用此方法指定为管理员的任何人都可以使用 sudo 命令在 Linux 计算机上执行所有管理任务。Linux 在安装时只允许创建一个非 root 用户,所以其他新用户可以在创建时添加到 wheel 组中。root 用户或其他管理员可以使用文本编辑器或 usermod 命令直接将现有用户添加到 wheel 组。

在大多数情况下,今天的管理员只需要执行一些基本任务,例如添加新的打印机、安装更新或新软件,或者删除不再需要的软件。这些 GUI 工具需要 root 或管理密码,并将接受来自管理员用户的密码。

在 Linux 上,我是怎么使用 su 和 sudo 的呢

同时使用 susudo。它们都是我所使用的很重要的系统管理员工具。

我不锁定 root 帐户,因为我需要用 root 帐户来运行我的 Ansible 脚本和我编写的 rsbu Bash 程序,来执行备份。这两个程序都需要以 root 身份运行,我编写的其他几个管理 Bash 的脚本也是如此。我使用 su 命令切换到 root 用户,这样我就可以执行这些脚本和许多其他常见的命令。当我需要确定问题和解决问题时,使用 su 命令将我的权限提升到 root 十分有用,因为我不希望 sudo 带来的提权会话超时。

当非 root 用户需要执行这些任务时,我使用 sudo 命令,来执行需要 root 权限的任务。我在 sudoers 文件中设置了非 root 帐户,只允许访问完成任务所需的一两个命令。当我只需要运行一两个需要提权的快速命令时,我自己也会使用 sudo 命令。

结论

实际上只要你把工作完成好了,你使用什么工具都无大碍。你使用的是 Vim 还是 Emacs,是 systemd 还是 SystemV,是 RPM 亦或是 DEB,是 sudo 亦或是 su,在结果上会有什么区别呢?这里的关键在于你应该使用最适合你的工具。Linux 和开源软件的最大优势之一是通常有许多选项可用于我们需要完成的任务。

susudo 都各有长处,如果正确使用的话,两者都是非常安全的。我选择同时使用 susudo 命令,基于它们的历史功能,因为这对我来说十分有用。对于我自己的大部分工作,我更喜欢 su 命令,因为它与我的工作流程最适配。

在评论区分享你喜欢的工作方式吧!

本文摘自于我的书《 系统管理员的 Linux 哲学 The Linux Philosophy for Sysadmins (Apress,2018 年)》一书的第 19 章,并经许可后重新发布。


via: https://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin

作者:David Both 选题:lkxed 译者:chai001125 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是在 GNOME 文件应用中以 root 身份访问文件或目录的最简单方法。

在 Windows 中,你通常可以在右键单击上下文菜单中以“以管理员身份打开”的方式打开文件或文件夹。

该功能是文件管理器的一部分,对于 Windows,它是 Windows 资源管理器的一部分。但是,它是由操作系统及其权限控制模块执行的。

在 Linux 发行版及其文件管理器中,情况略有不同。不同的桌面有自己的处理方式。

由于以管理员(root)身份修改文件和文件夹是有风险的,并且可能导致系统损坏,因此用户无法通过文件管理器的 GUI 轻松使用该功能。

例如,KDE Plasma 的默认文件管理器(Dolphin)最近 添加了此功能,因此当需要 root 权限时,它会通过 PolicyKit KDE Agent(polkit)窗口询问你,如下所示。

使用 Polkit 实现 KIO 后的 Dolphin root 访问权限

而不是相反的方式。比如,你想在文件管理器中通过 root 打开/执行一些东西时,你不能使用 sudo dolphin 以 root 权限运行文件管理器本身。

在某种程度上,它挽救了许多不可预见的情况。但是高级用户总是可以通过终端使用 sudo 来完成他们的工作。

GNOME 文件应用(Nautilus)和对文件、目录的 root 访问权限

话虽如此,GNOME 文件应用(又名 Nautilus)有一种方法可以通过 root 打开文件和文件夹。

以下是方法:

  • 打开 GNOME 文件应用(Nautilus)。
  • 然后单击左侧窗格中的“ 其他位置 Other Locations ”。
  • CTRL+L 调出地址栏。
  • 在地址栏中,输入下面的内容并回车。
admin:///
  • 它会要求输入管理员密码。当你成功验证,你就会以管理员身份打开系统。
  • 现在,从这里开始,无论你做什么,它都是管理员或 root。

以管理员身份输入位置地址

输入管理员密码

以 root 身份打开 GNOME 文件应用

但是,与往常一样,请小心你作为管理员所做的事情。在你以 root 身份验证自己之后,通常很容易忘记。

这些选项不容易看到总是有原因的,以防止你和许多新的 Linux 用户破坏他们的系统。

祝好。


via: https://www.debugpoint.com/gnome-files-root-access/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Fedora 中重置忘记的 root 密码。

你是否忘记了 Fedora 中的 root 密码?或者你想更改 Fedora 系统中的 root 用户密码?没问题!本手册将指导你在 Fedora 操作系统中完成更改或重置 root 密码的步骤。

注意: 本手册已在 Fedora 36 和 35 版本上进行了正式测试。下面提供的步骤与在 Fedora Silverblue 和旧 Fedora 版本中重置 root 密码的步骤相同。

步骤 1 - 打开 Fedora 系统并按下 ESC 键,直到看到 GRUB 启动菜单。出现 GRUB 菜单后,选择要引导的内核并按下 e 编辑选定的引导条目。

Grub Menu In Fedora 36

步骤 2 - 在下一个页面中,你将看到所有启动参数。找到名为 ro 的参数。

Find ro Kernel Parameter In Grub Entry

步骤 3 - 将 ro 参数替换为 rw init=/sysroot/bin/sh。请注意 rwinit=/sysroot...之间的空格。修改后的内核参数行应如下所示。

Modify Kernel Parameters

步骤 4 - 上述步骤更改参数后,按 Ctrl+x 进入紧急模式,即单用户模式。

在紧急模式下,输入以下命令以 读/写 模式挂载根文件系统(/)。

chroot /sysroot/

Mount Root Filesystem In Read, Write Mode In Fedora Linux

步骤 5 - 现在使用 passwd 命令重置 root 密码:

passwd root

输入两次 root 密码。我建议使用强密码。

Reset Or Change Root Password In Fedora

步骤 6 - 重置 root 密码后,运行以下命令在重启时启用 SELinux 重新标记:

touch /.autorelabel

Enable SELinux Relabeling On Reboot In Fedora

步骤 7 - 最后,退出单用户模式并通过运行以下命令将 Fedora 系统重启到正常模式:

exit
reboot

等待 SELinux 重新标记完成。这将需要几分钟,具体时长取决于文件系统的大小和硬盘的速度。

SELinux Filesystem Relabeling In Progress

步骤 8 - 文件系统重新标记完成后,你可以使用新的 root 密码登录到你的 Fedora 系统。

Login To Fedora As Root User

如你所见,在 Fedora 36 中重置 root 密码的步骤非常简单,并且与 在 RHEL 中重置 root 密码 及其衍生版本(如 CentOS、AlmaLinux 和 Rocky Linux)完全相同。


via: https://ostechnix.com/reset-root-password-in-fedora/

作者:sk 选题:lkxed 译者:geekpi 校对:turbokernel

本文由 LCTT 原创编译,Linux中国 荣誉推出

以下是切换到 Linux sudo 命令的五个安全原因。下载 sudo 参考手册获取更多技巧。

在传统的 Unix 和类 Unix 系统上,新系统中存在的第一个同时也是唯一的用户是 root。使用 root 账户登录并创建“普通”用户。在初始化之后,你应该以普通用户身份登录。

以普通用户身份使用系统是一种自我施加的限制,可以防止愚蠢的错误。例如,作为普通用户,你不能删除定义网络接口的配置文件或意外覆盖用户和组列表。作为普通用户,你无权访问这些重要文件,所以你无法犯这些错误。作为系统的实际所有者,你始终可以通过 su 命令切换为超级用户(root)并做你想做的任何事情,但对于日常工作,你应该使用普通账户。

几十年来,su 运行良好,但随后出现了 sudo 命令。

对于日常使用超级用户的人来说,sudo 命令乍一看似乎是多余的。在某些方面,它感觉很像 su 命令。例如:

$ su root
<输入密码>
# dnf install -y cowsay

sudo 做同样的事情:

$ sudo dnf install -y cowsay
<输入密码>

它们的作用几乎完全相同。但是大多数发行版推荐使用 sudo 而不是 su,甚至大多数发行版已经完全取消了 root 账户(LCTT 译注:不是取消,而是默认禁止使用 root 用户进行登录、运行命令等操作。root 依然是 0 号用户,依然拥有大部分系统文件和在后台运行大多数服务)。让 Linux 变得愚蠢是一个阴谋吗?

事实并非如此。sudo 使 Linux 更加灵活和可配置,并且没有损失功能,此外还有 几个显著的优点

为什么在 Linux 上 sudo 比 root 更好?

以下是你应该使用 sudo 替换 su 的五个原因。

1. root 是被攻击确认的对象

我使用 防火墙fail2banSSH 密钥 的常用组合来防止一些针对服务器的不必要访问。在我理解 sudo 的价值之前,我对日志中的暴力破解感到恐惧。自动尝试以 root 身份登录是最常见的情况,自然这是有充分理由的。

有一定入侵常识的攻击者应该知道,在广泛使用 sudo 之前,基本上每个 Unix 和 Linux 都有一个 root 账户。这样攻击者就会少一种猜测。因为登录名总是正确的,只要它是 root 就行,所以攻击者只需要一个有效的密码。

删除 root 账户可提供大量保护。如果没有 root,服务器就没有确认的登录账户。攻击者必须猜测登录名以及密码。这不是两次猜测,而是两个必须同时正确的猜测。(LCTT 译注:此处是误导,root 用户不可删除,否则系统将会出现问题。另外,虽然 root 可以改名,但是也最好不要这样做,因为很多程序内部硬编码了 root 用户名。可以禁用 root 用户,给它一个不能登录的密码。)

2. root 是最终的攻击媒介

在访问失败日志中经常可以见到 root 用户,因为它是最强大的用户。如果你要设置一个脚本强行进入他人的服务器,为什么要浪费时间尝试以受限的普通用户进入呢?只有最强大的用户才有意义。

root 既是唯一已知的用户名,又是最强大的用户账户。因此,root 基本上使尝试暴力破解其他任何东西变得毫无意义。

3. 可选择的权限

su 命令要么全有要么全没有。如果你有 su root 的密码,你就可以变成超级用户。如果你没有 su 的密码,那么你就没有任何管理员权限。这个模型的问题在于,系统管理员必须在将 root 密钥移交或保留密钥和对系统的所有权之间做出选择。这并不总是你想要的,有时候你只是想授权而已

例如,假设你想授予用户以 root 身份运行特定应用程序的权限,但你不想为用户提供 root 密码。通过编辑 sudo 配置,你可以允许指定用户,或属于指定 Unix 组的任何用户运行特定命令。sudo 命令需要用户的现有密码,而不是你的密码,当然也不是 root 密码。

4.超时

使用 sudo 运行命令后,通过身份验证的用户的权限会提升 5 分钟。在此期间,他们可以运行任何管理员授权的命令。

5 分钟后,认证缓存被清空,下次使用 sudo 再次提示输入密码。超时可防止用户意外执行某些操作(例如,搜索 shell 历史记录时不小心或按多了向上箭头)。如果一个用户离开办公桌而没有锁定计算机屏幕,它还可以确保另一个用户不能运行这些命令。

5. 日志记录

Shell 历史功能可以作为一个用户所做事情的日志。如果你需要了解系统发生了什么,你可以(理论上,取决于 shell 历史记录的配置方式)使用 su 切换到其他人的账户,查看他们的 shell 历史记录,也可以了解用户执行了哪些命令。

但是,如果你需要审计 10 或 100 名用户的行为,你可能会注意到此方法无法扩展。Shell 历史记录的轮转速度很快,默认为 1000 条,并且可以通过在任何命令前加上空格来轻松绕过它们。

当你需要管理任务的日志时,sudo 提供了一个完整的 日志记录和警报子系统,因此你可以在一个特定位置查看活动,甚至在发生重大事件时获得警报。

学习 sudo 其他功能

除了本文列举的一些功能,sudo 命令还有很多已有的或正在开发中的新功能。因为 sudo 通常是你配置一次然后就忘记的东西,或者只在新管理员加入团队时才配置的东西,所以很难记住它的细微差别。

下载 sudo 参考手册,在你最需要的时候把它当作一个有用的指导书。

sudo 参考手册

via: https://opensource.com/article/22/5/use-sudo-linux

作者:Seth Kenlon 选题:lkxed 译者:MjSeven 校对:turbokernel

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你刚开始使用 Linux 时,你将发现与 Windows 的很多不同。其中一个“不同的东西”是 root 用户的概念。

在这个初学者系列中,我将解释几个关于 Ubuntu 的 root 用户的重要的东西。

请记住,尽管我正在从 Ubuntu 用户的角度编写这篇文章,它应该对大多数的 Linux 发行版也是有效的。

你将在这篇文章中学到下面的内容:

  • 为什么在 Ubuntu 中禁用 root 用户
  • 像 root 用户一样使用命
  • 切换为 root 用户
  • 解锁 root 用户

什么是 root 用户?为什么它在 Ubuntu 中被锁定?

在 Linux 中,有一个称为 root 的超级用户。这是超级管理员账号,它可以做任何事以及使用系统的一切东西。它可以在你的 Linux 系统上访问任何文件和运行任何命令。

能力越大,责任越大。root 用户给予你完全控制系统的能力,因此,它应该被谨慎地使用。root 用户可以访问系统文件,运行更改系统配置的命令。因此,一个错误的命令可能会破坏系统。

这就是为什么 Ubuntu 和其它基于 Ubuntu 的发行版默认锁定 root 用户,以从意外的灾难中挽救你的原因。

对于你的日常任务,像移动你家目录中的文件,从互联网下载文件,创建文档等等,你不需要拥有 root 权限。

打个比方来更好地理解它。假设你想要切一个水果,你可以使用一把厨房用刀。假设你想要砍一颗树,你就得使用一把锯子。现在,你可以使用锯子来切水果,但是那不明智,不是吗?\_

这意味着,你不能是 Ubuntu 中 root 用户或者不能使用 root 权限来使用系统吗?不,你仍然可以在 sudo 的帮助下来拥有 root 权限来访问(在下一节中解释)。

要点: 使用于常规任务,root 用户权限太过强大。这就是为什么不建议一直使用 root 用户。你仍然可以使用 root 用户来运行特殊的命令。

如何在 Ubuntu 中像 root 用户一样运行命令?

Image Credit: xkcd

对于一些系统的特殊任务来说,你将需要 root 权限。例如。如果你想通过命令行更新 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,来像 root 用户一样运行。

sudo apt update

Ubuntu 和很多其它的 Linux 发行版使用一个被称为 sudo 的特殊程序机制。sudo 是一个以 root 用户(或其它用户)来控制运行命令访问的程序。

实际上,sudo 是一个非常多用途的工具。它可以配置为允许一个用户像 root 用户一样来运行所有的命令,或者仅仅一些命令。你也可以配置为无需密码即可使用 sudo 运行命令。这个主题内容比较丰富,也许我将在另一篇文章中详细讨论它。

就目前而言,你应该知道当你安装 Ubuntu 时,你必须创建一个用户账号。这个用户账号在你系统上以管理员身份来工作,并且按照 Ubuntu 中的默认 sudo 策略,它可以在你的系统上使用 root 用户权限来运行任何命令。

sudo 的问题是,运行 sudo 不需要 root 用户密码,而是需要用户自己的密码

并且这就是为什么当你使用 sudo 运行一个命令,会要求输入正在运行 sudo 命令的用户的密码的原因:

[email protected]:~$ sudo apt update
[sudo] password for abhishek:

正如你在上面示例中所见 abhishek 在尝试使用 sudo 来运行 apt update 命令,系统要求输入 abhishek 的密码。

如果你对 Linux 完全不熟悉,当你在终端中开始输入密码时,你可能会惊讶,在屏幕上什么都没有发生。这是十分正常的,因为作为默认的安全功能,在屏幕上什么都不会显示。甚至星号(*)都没有。输入你的密码并按回车键。

要点:为在 Ubuntu 中像 root 用户一样运行命令,在命令前添加 sudo。 当被要求输入密码时,输入你的账户的密码。当你在屏幕上输入密码时,什么都看不到。请继续输入密码,并按回车键。

如何在 Ubuntu 中成为 root 用户?

你可以使用 sudo 来像 root 用户一样运行命令。但是,在某些情况下,你必须以 root 用户身份来运行一些命令,而你总是忘了在命令前添加 sudo,那么你可以临时切换为 root 用户。

sudo 命令允许你来模拟一个 root 用户登录的 shell ,使用这个命令:

sudo -i
[email protected]:~$ sudo -i
[sudo] password for abhishek:
[email protected]:~# whoami
root

你将注意到,当你切换为 root 用户时,shell 命令提示符从 $(美元符号)更改为 #(英镑符号)。我开个(拙劣的)玩笑,英镑比美元强大。

虽然我已经向你显示如何成为 root 用户,但是我必须警告你,你应该避免作为 root 用户使用系统。毕竟它有阻拦你使用 root 用户的原因。

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

sudo su

如果你尝试使用不带有的 sudosu 命令,你将遇到 “su authentication failure” 错误。

你可以使用 exit 命令来恢复为正常用户。

exit

如何在 Ubuntu 中启用 root 用户?

现在你知道,root 用户在基于 Ubuntu 发行版中是默认锁定的。

Linux 给予你在系统上想做什么就做什么的自由。解锁 root 用户就是这些自由之一。

如果出于某些原因,你决定启用 root 用户,你可以通过为其设置一个密码来做到:

sudo passwd root

再强调一次,不建议使用 root 用户,并且我也不鼓励你在桌面上这样做。如果你忘记了密码,你将不能再次在 Ubuntu 中更改 root 用户密码。(LCTT 译注:可以通过单用户模式修改。)

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

sudo passwd -dl root

最后…

我希望你现在对 root 概念理解得更好一点。如果你仍然有些关于它的困惑和问题,请在评论中让我知道。我将尝试回答你的问题,并且也可能更新这篇文章。


via: https://itsfoss.com/root-user-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出