如何更改登录 WSL 的默认用户?

Sha*_*c20 13 permissions default users user-management windows-subsystem-for-linux

我在 Windows 上使用 WSL 运行 Ubuntu 终端,每次启动终端时,它都会以 root 用户身份登录。我创建了一个新用户并授予他们 root 权限,以便我可以更轻松地编码。如何更改登录的默认用户?

这是我启动时看到的:

这是我启动时看到的

运行后su shayc我可以访问我的用户,但如何避免每次都这样做?

**更新:** 我尝试在 /etc/wsl.conf 中设置默认用户

这是 wsl.conf 文件

注意:我也无法运行 WSL 命令

未找到 wsl

Not*_*1ds 8

这里有一些需要注意的事情。首先,当您在 WSL 上安装后第一次运行 Ubuntu 时,它应该已经完成​​了“配置”步骤,要求您创建用户名和密码。该用户将是运行时应使用的“默认用户” 。如果实例以“root”作为默认用户运行,则可能表示配置中存在错误(从注释来看,这似乎就是发生的情况)。

老实说,这不是什么大不了的事。您在创建新用户时做了正确的事情。只是这本来不应该是必要的。

至于将该新用户设置为默认用户,至少有两种可能的路径:


选项1:wsl.conf

目前微软推荐的方法是在实例中创建一个/etc/wsl.conf具有以下设置的实例:

[user]
default=username
Run Code Online (Sandbox Code Playgroud)

当然,将用户名更改为您的默认用户名。

退出您的实例,发出 a wsl --terminate Ubuntu(假设您的实例名称是“Ubuntu”,您可以使用 确认wsl -l -v)或wsl --shutdown(从 PowerShell 或 CMD),然后重新启动。


选项 2:将实例“重置”回配置阶段

请注意,这是一个破坏性操作。如果实例内没有任何无法轻松恢复的工作,那么您可以轻松地将实例重置回初始状态。这是因为 WSL 为任何发行版留下了原始 rootfs 下的隐藏目录C:\ProgramData

在执行此操作之前,您始终可以备份旧实例,“以防万一”。命令(同样,全部来自 PowerShell 或 CMD)应类似于:

wsl --export Ubuntu "2021-11-21 Ubuntu WSL Backup.tar"
Run Code Online (Sandbox Code Playgroud)

然后(这是破坏性的部分):

wsl --unregister Ubuntu
Run Code Online (Sandbox Code Playgroud)

然后重新运行“应用程序” ubuntu.exe(或者,如果您从商店安装了特定于版本的应用程序,则可能是ubuntu2004.exe)。

此时,配置步骤将重新运行,询问默认用户名和密码。