为什么“su”命令在 Ubuntu 中不起作用,但在其他 Linux 发行版中起作用?

gig*_*iga 11 command-line sudo su

当我su在终端中输入命令时,我得到

 su: Authentication failure
Run Code Online (Sandbox Code Playgroud)

为什么这在 Ubuntu 中不起作用?我已经在另一个 Linux 发行版(Parrot OS)中尝试过这个命令,它确实有效。

Zan*_*nna 23

因为在 Ubuntu 中,默认情况下 root 没有密码。

没有参数,su意味着“将用户切换到 root”,为此你必须输入 root 的密码,而不是你自己的。除非你给 root 一个密码,否则它没有密码,所以你不能真正以 root 身份登录。

这是一些背景:

在 Unix 世界中,由于 Unix 的多用户传统,普通用户和管理员之间一直存在较大的分歧。Unix 中采用的方法是仅在需要时授予超级用户权限。为此,通常使用 su 和 sudo 命令。

直到几年前,大多数 Linux 发行版都依赖 su 来实现这个目的。su 不需要 sudo 所需的配置,并且在 Unix 中拥有 root 帐户是传统的。这就引入了一个问题。用户被诱惑以不必要的身份运行。事实上,一些用户专门以 root 用户身份操作他们的系统,因为它消除了所有那些烦人的“权限被拒绝”消息。这就是您如何将 Linux 系统的安全性降低到 Windows 系统的安全性。不是个好主意。

当 Ubuntu 被引入时,它的创建者采取了不同的策略。默认情况下,Ubuntu 禁用 root 帐户的登录(由于未能为该帐户设置密码),而是使用 sudo 授予超级用户权限。初始用户帐户通过 sudo 被授予对超级用户权限的完全访问权限,并且可以向后续用户帐户授予类似的权力。

~ Linux 命令行

您可以使用su切换用户,如果您知道要切换到的用户的密码,例如,我可以su pixie作为我的备份用户登录。

通常,您应该使用sudo自己的密码进行身份验证或启动 root shell,使用sudo -i

  • 从技术上讲,`su` 的意思是“切换用户”(和 _defaults_ 到 root。)它并不意味着“超级用户”。 (5认同)
  • 我从来没有说过这意味着超级用户! (2认同)
  • @Bakuriu 字面上的空密码仍然是密码。 (2认同)

Ter*_*nce 9

那是因为在其他发行版中安装它们时,它们通常会提示您设置root密码以及用户帐户密码。Ubunturoot在安装过程中不会要求输入密码,只需要一个用户的用户帐户密码,该用户将有权sudo访问而root在 Ubuntu 中禁用该帐户。如果要启用此功能,请为该root帐户设置一个密码,以启用该root帐户以允许该su命令工作。

sudo passwd root
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


jii*_*ezz 5

简要地

Ubuntu中默认禁用root帐户,因此没有设置密码,因此会导致身份验证失败

要成为 Ubuntu 的 root,你可以使用这个

sudo -i
Run Code Online (Sandbox Code Playgroud)