为什么我的 Ubuntu 在启动时默认为 root 用户?(Duel 运行 Windows 10)

为什么我的 Ubuntu 在启动时默认为 root 用户?(Duel 运行 Windows 10)
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:        20.04
Codename:       focal

你好

我已经使用 Ubuntu 好几个月了。我运行的是 Windows 10 PC,并通过 Microsoft Store 安装了 Ubuntu。我在初始设置期间为自己创建了一个用户 - 从那时起,每当我从 Windows 打开 Ubuntu 终端时,它都会以该用户的身份加载。

周四,我加载了 Ubuntu,但它没有以我的用户身份加载,而是以 root 用户身份加载。我的用户仍然存在 - 我可以通过切换到我的用户,su然后照常进行。这没有给我带来任何问题,但它确实存在异常行为,并且存在明显的安全隐患。

我已经运行sudo apt updatesudo apt upgrade确保一切都是最新的。我使用与以往相同的 Windows 帐户加载 Windows 10。我不知道有任何操作更改导致了此行为。

一个可能表明原因的因素是 - 我用code .它来访问 Visual Studio Code。切换用户后,它不起作用,只有当我将它添加到用户的 $PATH 中时,它才再次起作用。

尝试用谷歌搜索这种情况,但谷歌假设我想以 root 身份登录,而实际上情况恰恰相反,这在某种程度上破坏了这一尝试。

有人能指出这里可能发生了什么,并提出解决办法吗?我并不反对把所有东西都拆掉,然后重新开始安装,但在考虑这个问题之前,我想知道一些简单的事情是否可能是一个问题。

谢谢

答案1

我加载了 Ubuntu,但它不是以我的用户身份加载,而是以 root 用户身份加载。

有人可以……建议解决办法吗?

通常这意味着告诉 WSL 默认用户的 UID 的注册表项已“丢失”。典型的解决方案是通过创建一个/etc/wsl.conf(以 root 身份)来告诉 WSL 它应该使用哪个 UID,如下所示:

[user]
default=your_username

其他一些替代方案如下:这个答案

有人能说出这里可能发生了什么事吗......?

我希望至少能推测出一个原因为什么这种情况确实发生了,但从我们在评论中的讨论来看,我仍然不确定。

对于 WSL 下的默认 Ubuntu 安装,默认 uid(通常为 1000)存储在注册表中。在以下情况下,该信息可能会丢失:

  • 已编辑一个 WSL 发行版--import
  • 或者如果其他东西发生变化,会“断开”注册表项与发行版的连接。重命名默认的 Windows 用户文件夹会导致这种情况,但也会导致发行版本身“丢失”(事实并非如此)。

因此,这听起来不像是默认用户更改的原因。但是,如果 WSL 发行版没有设置默认用户,则将改用 uid 0(root)。这肯定就是您看到的。

您可以通过在 PowerShell 中运行以下命令来查看所有 WSL 发行版的注册表项:

Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\

我猜想要么DefaultUid是缺失了,要么是设置为了0。但是我还是不太清楚这是怎么发生的。

我的用户仍然存在 - 我可以通过切换到我的用户su,然后正常继续。

这很好。至少我们应该能够告诉 WSL 再次将其用作默认值。

它没有给我带来任何问题,但它确实存在不寻常的行为,并且有明显的安全隐患。

您可能会想,但如上所述,默认为 root 是 WSL 中的预期行为。WSL 发行版中没有“登录”的概念——无论如何,您都可以使用wsl -u <username>(例如)以任何用户身份登录。wsl -u root

这样做的理由是,即使是 WSL 中的 root 用户也受到视窗用户。无论您是否是 root 用户,您仍然无法删除或更改 中的二进制文件等C:\Windows\System32

答案2

我找到了解决方案https://github.com/microsoft/WSL/issues/4276#issuecomment-509338642

以管理员身份打开 PowerShell。粘贴命令:

ubuntu2004.exe config --default-user <username you wish to switch to>

注意:将发行版替换为您系统上的版本。对我来说,我安装的版本是 ubuntu20.04。之后,启动 Ubuntu。

相关内容