在 WSL 上为 Ubuntu 创建新的顶级管理员用户

在 WSL 上为 Ubuntu 创建新的顶级管理员用户

使用“WSL Ubuntu”将标准 Ubuntu 替换为 win-10

五年来,我一直使用 GUI 桌面启动 Ubuntu 发行版,但今年,我的教授强迫我在我的计算机上添加 Windows。过去,我会双启动这两个发行版,但我相信你们大多数人可能已经知道,已经有几个 Linux 发行版可供在“Windows 10”环境中工作的开发人员使用,因此,我决定设置 WSL 而不是双启动。

我的机器操作系统的状态

因此,我正在设置 WSL,并参考此处的文档WSL 上的 Ubuntu 官方页面每当我遇到麻烦时。无论出于什么原因,我都无法登录 Ubuntu,但是 WSL 和 Ubuntu 似乎运行良好,所以我只是使用了世界上最著名的 Linux 解决方法,并以 root 身份登录(这需要我将默认用户设置为 root)。问题是,我无法返回初始提示以输入用户名和密码,据我所知,这是为虚拟 WSL Ubuntu 实例正确创建新用户的方式。

深入解释当前问题

我从未这样做过,所以我不知道在 Windows-10 子系统中运行的“Ubuntu 操作系统”上正确的默认 sudo/admin 帐户应该是什么样子。我是否需要返回提示,或者我可以自己设置一个新用户?如果我确实自己设置了一个新用户,那么为 Ubuntu 的 WSL 实例配置顶级管理员帐户(又名 Sudo 帐户)的正确方法是什么。

关于配置,我不太清楚的事情包括:

  1. 该帐户是否应为系统帐户,并且是否应使用 ubuntu 分配的任意名称?
  2. 该帐户是否应该有一个主目录?
  3. sudo-group 是否是admin:sudo唯一需要添加最高安全级别管理员帐户(又名 Sudo-account)的组,我是否应该创建另一个与我正在创建的管理员帐户同名的组?

答案1

问题是,我无法返回初始提示来输入用户名和密码,据我所知,这是为虚拟 WSL Ubuntu 实例正确创建新用户的方式。

.exe没错。首次运行发行版可执行文件(从 Microsoft Store 安装的)时,将创建初始用户。对于 Ubuntu,这通常是ubuntu.exe,但具体情况可能会有所不同,具体取决于您是否在商店中安装了“命名版本”(例如,具体是 Ubuntu 20.04)。也就是说,完全可以手动创建默认用户(见下文)。

我们先来wsl -l -v看看发行版的名称。它很可能只是“Ubuntu”,但如果不同,请修改以下命令。


“简单”按钮

可以回到初始的“配置”状态,但这样做有一个很大的假设和警告将删除实例中的所有数据/配置(虚拟文件系统等)。该命令是wsl --unregister Ubuntu

完成此操作后,您只需从“开始”菜单重新运行“Ubuntu”,即可重新创建发行版。然后它会要求您输入默认用户名/密码。


以 root 身份运行,无需sudo

您可能会发现一个很有用的巧妙技巧,那就是可以使用任何可用的用户(包括)启动 WSL,而root无需密码:

wsl ~ -u root
wsl ~ -u fred

虽然你最初可能会对无需密码即可运行 root 权限感到震惊,但请记住,即使作为 root 权限,你在 WSL 中的权限也永远不会超过你的 Windows 用户权限。也就是说,请绝不 做这个


侧边栏:您的问题

首先,回答您的一些问题:

该帐户是否应为系统帐户,并且是否应使用 Ubuntu 分配的任意名称?

不确定您在这里的意思,但我相信答案是“否”。默认用户可以随意命名。为了方便起见,我建议只使用您通常喜欢的用户名。

该帐户是否应该有一个主目录?

是的,主目录应该位于/home不是在 Windows 安装的驱动器上(例如/mnt/c)。

sudo-group admin:sudo 是否是唯一需要添加最高安全级别管理员帐户(又名 Sudo-account)的组,我是否应该创建另一个与我正在创建的管理员帐户同名的组?

Ubuntu 的默认方法(包括“纯 Linux”和“WSL”)是创建一个与用户名同名的组。虽然可能不是必需的,我认为这是“最佳实践”。


创建新的“默认”WSL 用户而无需重新安装

据我所知,以下命令将使用与常规安装程序/配置相同的设置创建默认用户。在 Ubuntu 中:

useradd --create-home --user-group --groups  adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev --password "encryptedPassword" username

当然,username您可以随意修改。由于您已经以 root 身份运行,因此当然不需要sudo或任何花招,但是其他没有 OP 用例的读者可能需要sudowsl -u root(如在这个答案)。

当然,这些组中的大多数可能在 WSL 下并不是必需的,但谁知道呢 - 有些应用程序可能需要其中一些,安全总比后悔好。再次强调,这是 Ubuntu/WSL 配置器创建时为用户提供的“库存”组列表。

这里如何创建加密密码。具体来说(虽然个人没有测试过这个命令行):

useradd --create-home --user-group --groups  adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev --password $(read -sp Password: pw ; echo $pw | openssl passwd -1 -stdin) username

设置默认 WSL 用户

“通常”,WSL 发行版安装程序(例如ubuntu.exe)会使用发行版的默认用户名修改 Windows 注册表。不过,我建议使用一种较新的方法。以 root 身份创建一个/etc/wsl.conf包含以下内容的文件:

[user]
default=username

当然,再次替换您的username

有关替代技术,请参阅这个问题以及它的各种答案。


建议的后续步骤

我个人建议在此阶段备份此发行版的“随时可用”副本。再次从 PowerShell 中获取:

wsl --export Ubuntu "2021-08-26 Default Ubuntu 20.04.tar"

如果您需要启动一个一次性 WSL 实例来测试某些东西而不修改您的“日常驱动程序”,您可以轻松地使用wsl --import此发行版(将其称为“Ubuntu”以外的其他名称),然后将其扔掉wsl --unregister

相关内容