如何启用root登录?

我想在我的Ubuntu安装中启用root账户。
我意识到这样做可能带来的安全风险。

Daniel M在这里的回答https://askubuntu.com/a/1192535/919134 是截至2023年在我的Ubuntu 20.04 Linux上唯一有效的解决方案。 - undefined
5个回答

警告

虽然可以这样做,但不建议这样做

启用

要实际启用root登录,首先必须为root账户设置密码,然后解锁被锁定的root账户。如果您没有为root账户设置密码,passwd命令将返回

passwd: unlocking the password would result in a passwordless account.  

首先,在终端中执行以下命令
sudo passwd root

您将被要求设置一个新的Unix密码。请将其输入两次(第二次用于确认)。

然后执行

sudo passwd -u root 

解锁账户。应该返回此内容
passwd: password expiry information changed

还原

如果您想在Ubuntu中禁用root帐户,您需要使用以下命令锁定root帐户:sudo passwd -l root

替代root登录

如果您想要在root控制台上工作,也可以使用sudo -i

只有在您知道自己在做什么时才这样做。关于为何保持sudo的更多信息在这里

图形化版本需先进行设置:

pkexec gnome-terminal将打开一个带有根提示符的终端。

passwd root将允许您为root创建密码。

注意:由于安全原因,以提升的权限运行users-admin不再起作用,因为存在一个被标记为“无法修复”的错误。请参阅https://bugs.launchpad.net/ubuntu/+source/gnome-system-tools/+bug/685215以获取解释。

pkexec users-admin会打开用户界面:im1

文档


1使用sudo apt-get install gnome-system-tools命令进行安装。 - WitchCraft
3这个链接只是解释了为什么以root身份登录是不好的,但没有给出为什么拥有一个root账户也是不好的原因。在任何带有恢复模式的系统上,root账户仍然存在,所以如果没有"启用",root shell就不需要密码。 - mchid
1我按照上述步骤操作了,但在登录页面仍然没有以root身份登录的选项,只有我的用户名和访客账户。 - Black
我有一个Ubuntu虚拟机,在按照这个步骤后,我可以在控制台上以“root”身份登录,但无法通过ssh以“root”身份登录。 - jersey bean
1仍然无法以root身份登录。 - Danijel
另外,我还需要编辑/etc/ssh/sshd_config文件,并添加以下内容:PermitRootLogin yes - Danijel
Daniel M在这里的回答https://askubuntu.com/a/1192535/919134是唯一在2023年适用于我的Ubuntu 20.04 Linux的解决方案。 - undefined

您可以通过将密码设置为来启用root账户。
sudo passwd root

虽然不建议这样做。从帮助Ubuntu中可以看出。

启用Root账户很少是必要的。几乎所有你作为Ubuntu系统管理员需要做的事情都可以通过sudo或gksudo来完成。如果你真的需要一个持久的Root登录,最好的选择是使用以下命令模拟Root登录shell...

并且

自行承担风险!

以root身份登录X可能会导致非常严重的问题。如果你认为你需要root账户来执行某个操作,请首先咨询官方支持渠道,确保没有更好的替代方案。

一旦启用,你可以通过以下方式禁用root账户:

sudo passwd -l root

这里是Ubuntu 12.04Ubuntu 12.10的启用root登录链接。


Daniel M在这里的回答https://askubuntu.com/a/1192535/919134是唯一在2023年适用于我的Ubuntu 20.04 Linux的解决方案。 - undefined

在Linux中,有一个特殊的帐户称为“root”。在Ubuntu中,默认情况下它是锁定的,但你可以启用root帐户。
然而,这通常不是一个好主意,在启用root登录之前你应该非常谨慎考虑。
有几个很好的理由不要使用root登录,而是使用sudo。
  • 用户不必记住额外的密码(即根密码),他们很可能会忘记(或写下来以便任何人轻易破解他们的帐户)。
  • 默认情况下,它避免了“我可以做任何事”的交互式登录(例如在Microsoft Windows系统中以“Administrator”用户身份登录的倾向),在进行重大更改之前,您将被提示输入密码,这应该让您考虑所做操作的后果。
  • sudo会添加一个命令运行日志条目(位于/var/log/auth.log中)。如果你搞砸了,你总是可以回去查看运行了哪些命令。这对审计也很有用。
  • 每个试图强行进入您的系统的黑客都知道它有一个名为Root的帐户,并且会首先尝试该帐户。但他们不知道其他用户的用户名是什么。由于Root帐户密码已锁定,因此这种攻击实际上毫无意义,因为首先没有要破解或猜测的密码。
  • 通过将用户添加到组中或从组中删除用户,它可以轻松转移管理员权限,无论是短期还是长期,同时不损害Root帐户。 sudo可以设置更细粒度的安全策略。
这在RootSudo Comunity Documentation中有更详细的讨论。
如果你有一系列通常需要使用sudo的命令,你可以在第一个命令之前输入sudo -i,然后在最后一个命令之后输入exit,以避免重复输入sudo。要以root权限运行GUI应用程序,请按下ALT+F2,然后输入gksugksudo,再输入你的程序名称(除非你使用的是KDE桌面,否则命令为kdesu)。
例如,gksu nautilusroot权限运行文件管理器。
正如你所见,几乎不需要启用root登录。
话虽如此,要启用root登录,只需设置一个root密码即可。
sudo passwd root

设置一个密码。然后你就可以作为root用户登录,但基于我之前提到的所有原因以及更多,我不建议你这样做。

有几个很好的理由不要登录而是使用root,包括"难道不应该使用sudo吗?" - Shauna
1@Shauna,谢谢你指出这个问题 - 帖子已经编辑过了。 - Warren Hill
Daniel M在这里的回答https://askubuntu.com/a/1192535/919134是唯一在2023年适用于我的Ubuntu 20.04 Linux的解决方案。 - undefined

不需要启用根帐户。您可以简单地使用sudo -i,就像以root身份登录一样,获得超级用户提示符。这样可以避免直接以root身份登录的安全风险。

不,它不能。我仍然可以格式化分区/。 - Lincity
当然,你仍然可以使用sudo格式化/分区。在Ubuntu中,sudo最常见的用途是临时授予超级用户权限,这样你就可以改变系统的几乎任何方面——有时候确实需要格式化/分区。我理解的主要原因是禁止直接以root身份登录——而不是以普通用户身份登录,然后使用su重新登录为root——是因为它需要先由普通用户登录,这个过程会被记录下来。其次,它也会阻止习惯性以root身份登录,这是一种不规范的习惯。 - bgvaughan
Daniel M在这里的回答https://askubuntu.com/a/1192535/919134是唯一在2023年适用于我的Ubuntu 20.04 Linux的解决方案。 - undefined

简单回答:是的,你可以做到。
目前有两个问题阻止默认Ubuntu登录root用户。
1. root用户没有设置密码。 2. 在/etc/shadow条目中有一个"!"(感叹号)。
以下命令一次性解决这两个问题:
sudo passwd -u root

因为他们的账户上有"!",所以需要使用-u部分。

3你试过了吗?因为我试过了,结果是“passwd: 解锁密码将导致一个无密码的账户。你应该使用usermod -p命令设置一个密码来解锁这个账户。”所以我猜,首先你必须设置root密码,然后再解锁它。 - NickTux
我对这个命令的理解是它会解锁密码并设置新密码,然后在控制台上与您交互以输入新密码。如果您从非交互式环境(如由其他程序调用的脚本)中调用此命令,则可能需要修改命令行以包含密码 - 这可以使用“passwd”命令完成。 - thomasrutter
Daniel M在这里的回答https://askubuntu.com/a/1192535/919134是唯一在2023年适用于我的Ubuntu 20.04 Linux的解决方案。 - undefined