我可以使用 sudo ,但由于密码验证失败,我无法使用 su,两者不应该是相同的密码吗?

我可以使用 sudo ,但由于密码验证失败,我无法使用 su,两者不应该是相同的密码吗?

当我尝试使用命令时,sudo一切都正常,但是,如果我想以超级用户身份登录,su它却不允许我使用。为什么?

答案1

怎么了?

要使用su命令更改(切换)用户,您应该提供目标用户的密码,这就是它的工作原理。但是sudo您也可以使用自己的密码。

例如,如果您使用su -命令切换到root用户,则必须使用 root 的密码,但默认情况下它没有任何密码,并且其帐户已被禁用。

有什么不同?

因此,su我们向所有需要切换到目标用户的用户提供一个密码,这样sudo做是为了解决这个问题。

我们设置了一个名为的文件sudoers,并在其中定义谁可以做什么。通过向sudo命令提供密码,他们实际上是在确认他们确实是在尝试运行命令,并且系统可以验证用户和他们被允许使用的命令。

我能做些什么?

您可以使用:sudo -i切换到 root 并将其默认 shell 作为登录 shell,或者切换到无登录 shellsudo -s甚至老式的sudo su -(再次登录 shell)。


额外信息

您还可以使用它sudo -l来查看您拥有的权限,例如,您是否有权切换到 root 或用户 bob,或者在特定机器上使用 john 运行特定命令?

澄清一下 root 帐户:
在 Ubuntu 机器中,默认情况下 root 帐户没有任何密码,同时该帐户被禁用。禁用帐户时,将在其密码哈希前面添加一个感叹号“!”,因此无论该帐户是否有密码,任何人都无法登录该帐户。

$ sudo grep root /etc/shadow
root:!:2020:0:99999:2:::

也就是说root没有任何密码(第二部分(以':'分隔)为空,只包含一个感叹号)并且同时被禁用:注意!

答案2

不,sudo您输入自己的密码,它su是 root 的密码,在 Ubuntu 中通常是禁用的。

相关内容