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

Sol*_*303 9 permissions sudo su

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

Rav*_*ina 25

怎么了?

要使用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:::
Run Code Online (Sandbox Code Playgroud)

这意味着 root 没有任何密码(第二部分(由 ':' 分隔)为空,它只包含一个感叹号)并且同时它被禁用:注意!.