为什么“who”命令没有将“root”显示为登录用户?

Hin*_*klo 3 bash root sudo su

当我使用以下命令从 gnome-terminal 以 root 身份登录时:

sudo su
Run Code Online (Sandbox Code Playgroud)

它让我以 root 用户身份登录。

这不是切换用户视为登录吗?

另外,哪个命令可以显示我所做的所有“切换”?

Rad*_*anu 5

首先,让我们来看看man who

Print information about users who are currently logged in.
Run Code Online (Sandbox Code Playgroud)

如你所说,

sudo su它将记录为 root 用户

所以,它是关于你的,而不是关于root 的

你是对的。这是来自man sudo

sudo allows a permitted user to execute a command as the superuser or
another user, as specified by the security policy.
Run Code Online (Sandbox Code Playgroud)

因此,同样,当您运行sudo su命令时,实际上您(不是root)正在su以超级用户身份执行命令。

如果你想成为 root,首先你必须启用 root 帐户。请参阅此处如何执行此操作:

在此之后,您可以在 tty1-6、通过 ssh、在登录屏幕的 GUI 等中使用 root 登录。

在 Ubuntu 中,似乎有一种替代方法可以让 root 登录而不启用他的帐户。以下命令将执行此操作:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gnome-terminal
Run Code Online (Sandbox Code Playgroud)

这将打开一个根终端:

根终端

关于第二个问题,我给你一个提示:在/var/log目录中查找像auth.log.*.