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安装Ubuntu。在最初的设置过程中,我为自己创建了一个用户--从那时起,每当我从Windows打开Ubuntu终端时,它都会以该用户的身份加载。
周四,我加载了Ubuntu,它不是作为我的用户加载,而是作为根用户加载。我的用户仍然存在-我可以通过su
切换到我的用户,然后继续正常进行。这并没有给我带来任何问题,但它确实符合不寻常的行为,而且存在着明显的安全隐患。
我运行了sudo apt update
和sudo apt upgrade
,以确保所有内容都是最新的。我使用相同的Windows帐户加载Windows 10,这是我一直拥有的。我不知道造成这种行为的任何操作上的变化。
一个可能指示原因的因素--我使用code .
访问Visual代码。这在切换用户之后不起作用,只有当我将它添加到我的用户的$PATH中时,它才会再次工作。
试图谷歌搜索这种情况在一定程度上受到了谷歌的影响,假设我想以根用户身份登录,而实际上情况正好相反。
有人能告诉我这里可能发生了什么,并建议一个解决办法吗?我并不是把所有的东西都撕掉,然后重新开始重新安装,但是在我考虑之前,我想知道一些简单的东西会不会是个问题。
谢谢
发布于 2022-09-05 19:34:47
我加载了Ubuntu,它不是作为我的用户加载,而是作为根用户加载。有人能..。请给我一个建议?
通常,这意味着通知WSL默认用户的UID的注册表项已经“丢失”。典型的解决方案是通过创建具有以下内容的/etc/wsl.conf
(作为根用户)来告诉WSL应该使用哪个UID:
[user]
default=your_username
在这个答案中还提到了其他一些替代方案。
有人能告诉我这是怎么回事吗.?
我希望我至少能从理论上解释为什么会发生这种情况,但从我们在评论中的讨论来看,我还是不确定。
对于WSL下的默认Ubuntu安装,默认uid (通常为1000)存储在注册表中。如果:
--import
编辑的。因此,这听起来并不是默认用户被更改的原因。但是,如果没有为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中的根也仅限于Windows用户的权限。不管您是根用户还是非root用户,您仍然无法删除或更改,例如,C:\Windows\System32
中的二进制文件。
发布于 2023-05-20 06:35:50
我在https://github.com/microsoft/WSL/issues/4276#issuecomment-509338642找到了一个解决方案
以管理员身份打开PowerShell。粘贴命令:
ubuntu2004.exe config --default-user <username you wish to switch to>
注意:用系统上的版本替换发行版。对我来说,我安装的版本是ubuntu20.04。之后,启动Ubuntu。
https://askubuntu.com/questions/1427355
复制相似问题