JΛY*_*DΞV 1 users adduser windows-subsystem-for-linux
然而,五年来我一直使用 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 帐户)的正确方法是什么。
admin:sudo唯一需要添加顶级安全级别管理员帐户(又名 Sudo-account)的组吗?我是否应该创建另一个与我正在创建的管理员帐户同名的组?问题是,我无法返回输入用户名和密码的初始提示,据我了解,这是如何为虚拟 WSL Ubuntu 实例正确创建新用户的。
正确的。首次运行分发可执行文件(.exe从 Microsoft Store 安装的)时完成初始用户创建。对于 Ubuntu,通常是这样ubuntu.exe,尽管它可能会有所不同,具体取决于您是否在商店中安装了“指定版本”(例如特别是 Ubuntu 20.04)。也就是说,完全可以手动创建默认用户(见下文)。
让我们首先wsl -l -v看看发行版名称是什么。它很可能只是“Ubuntu”,但如果不同,请修改以下命令。
可以回到初始的“配置”状态,但前提是这样做会删除实例中的所有数据/配置(虚拟文件系统等)。该命令是wsl --unregister Ubuntu.
完成此操作后,您应该能够从“开始”菜单重新运行“Ubuntu”,并且将重新创建发行版。然后它会询问您默认的用户名/密码。
sudo您可能会发现有用的一个巧妙技巧是,可以使用任何可用用户(包括 )启动 WSL root,而无需密码:
wsl ~ -u root
Run Code Online (Sandbox Code Playgroud)
wsl ~ -u fred
Run Code Online (Sandbox Code Playgroud)
虽然您最初可能会对无需密码即可运行 root 的能力感到震惊,但请记住,即使作为 root,您在 WSL 中的权限也永远不会超过您的 Windows 用户权限。也就是说,请永远不 要这样做。
首先回答一下大家的一些问题:
该帐户是否应该是系统帐户,是否应该使用 Ubuntu 分配的任意名称?
不确定你的意思到底是什么,但我相信答案是“不”。默认用户可以命名为您喜欢的任何名称。为了方便起见,我建议仅使用您通常喜欢的用户名。
帐户应该有主目录吗?
是的,并且该主目录应该位于 中/home,而不是位于 Windows 安装的驱动器上(例如/mnt/c)。
sudo-group admin:sudo 是唯一需要添加顶级安全级别管理员帐户(又名 Sudo-account)的组吗?我是否应该创建另一个与我正在创建的管理员帐户同名的组?
默认的 Ubuntu 方法(“纯 Linux”和“WSL”)是创建一个与用户名同名的组。虽然可能不是必需的,但我认为这是“最佳实践”。
据我所知,以下内容将使用与库存安装程序/配置相同的设置创建默认用户。从 Ubuntu 内部:
useradd --create-home --user-group --groups adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev --password "encryptedPassword" username
Run Code Online (Sandbox Code Playgroud)
当然可以修改username成你想要的样子。sudo由于您已经以 root 身份运行,所以当然不需要或任何欺骗,但没有 OP 用例的其他读者可能需要sudo或wsl -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
Run Code Online (Sandbox Code Playgroud)
“通常”,WSL 发行版安装程序(例如ubuntu.exe)会使用该发行版的默认用户名修改 Windows 注册表。不过,我推荐一种更新的方法。/etc/wsl.conf以 root 身份创建一个包含以下内容的文件:
[user]
default=username
Run Code Online (Sandbox Code Playgroud)
当然,再次替换您的username.
有关替代技术,请参阅此问题及其各种答案。
我个人建议在此阶段备份您的发行版的“准备运行”副本。再次,来自 PowerShell:
wsl --export Ubuntu "2021-08-26 Default Ubuntu 20.04.tar"
Run Code Online (Sandbox Code Playgroud)
如果您需要启动一个一次性的 WSL 实例来测试某些内容而不修改您的“日常驱动程序”,您可以轻松地使用wsl --import此发行版(将其称为“Ubuntu”以外的其他名称),然后使用wsl --unregister.
| 归档时间: |
|
| 查看次数: |
9686 次 |
| 最近记录: |