schuelermine Asked: 2020-07-05 03:25:34 +0800 CST2020-07-05 03:25:34 +0800 CST 2020-07-05 03:25:34 +0800 CST 如何为手动安装的 WSL 发行版设置默认用户? 772 我已经使用wsl --exportand克隆了一个 WSL 发行版wsl --import,但是现在,运行wsl newdistro总是让我以 root 身份登录。我知道该lxrun命令已被弃用并希望避免它。文档建议使用distroname.exe config,但这不起作用,因为这个没有相应的可执行文件。 windows linux 6 个回答 Voted Best Answer NotTheDr01ds 2021-02-20T13:16:25+08:002021-02-20T13:16:25+08:00 在撰写本文时,至少有三种(我们称之为 3.5)在导入的 WSL 实例中更改/设置默认用户的不同方法。虽然已经提到的两个仍然有效,但微软推荐的一种方法尚未在此问题中提及。 方法1 -/etc/wsl.conf 当前Microsoft 推荐的在实例中设置用户名的方法是在实例中创建一个/etc/wsl.conf具有以下设置的: [user] default=username 当然,将用户名更改为您的默认用户名。 退出您的发行版/实例,然后wsl --terminate <distroname>从 PowerShell 或 CMD 发出。重新启动时,应设置默认用户。 这比基于注册表的方法更安全且不易出错。 方法 2 - 注册表项 根据@harrymc 的回答设置注册表项。 方法 3 - LxRunOffline 使用LxRunOffline设置注册表项,如@Jaime 的回答中所述。最终这与方法 2 具有相同的效果。 半方法 4 - 通过wsl命令行参数选择运行时用户 在启动任何 WSL 实例时,可以通过以下方式选择用户名: wsl -u username或wsl -d distroname -u username等 例如,wsl -d Ubuntu -u root. 旁注:这个问题专门关于在导入的实例中设置默认用户名。但是,为了完整起见,您还可以为从商店(或wsl --install)安装的发行版设置默认用户名: <distro>.exe config --default-user <username> 例如,如果您从商店安装了“Ubuntu 20.04”,您将使用: ubuntu2004.exe config --default-user <username> 这.exe是 Windows 中的“应用程序执行别名”。您可以通过转到Windows 系统设置中的“管理应用程序执行别名”来检查名称。 harrymc 2020-07-05T04:32:00+08:002020-07-05T04:32:00+08:00 正常的命令语法例如是: ubuntu config --default-user new_user_name 但是,这不适用于通过以下命令启动的导入发行版: wsl --distribution <DistributionName> 试试这个未记录的方法: 使用regedit并导航到键: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss 检查其子项以查找在项目中具有正确名称的分布DistributionName 创建或修改名为的 DWORD 项并将DefaultUid其设置为默认用户的用户 ID (uid)。这里 root 用户是 id0而第一个用户 id 是 1000 ( 0x3e8)。 如果这对您的设置不起作用,您需要运行为: wsl --distribution ubuntu -u user_name 有关更多信息,请参阅: 在 Windows 10 中导出和导入 WSL Linux 发行版 在 Windows 10 中为 WSL 设置默认用户。 Jaime 2021-02-20T09:00:34+08:002021-02-20T09:00:34+08:00 如果您在 WSL 中安装一些自定义发行版,您将不会获得“distroname.exe”命令来更改配置。您可以使用LxRunOffline更改默认用户。此工具集可以使用choco install lxrunoffline. 获取发行版的默认用户 ID LxRunOffline 允许您获取和设置uid任何已安装发行版的默认用户 ID ( )。例如,如果您有一个名为的发行版,您可以使用(get default user) 并使用发行版的名称newdistro检查默认用户:gu-n lxrunoffline gu -n newdistro 该命令返回一个数字,即默认用户的用户 ID: root用户拥有用户0ID 安装期间创建的默认用户具有1000用户 ID。 设置发行版的默认用户 ID 如果您想将 设置root为默认用户,您可以使用su(set default user)-n和发行版的名称,以及用户 ID ,-v即0.root lxrunoffline su -n newdistro -v 0 beeThree 2021-05-18T21:58:19+08:002021-05-18T21:58:19+08:00 如果您使用的是Windows 终端,那么您可以为您的分发配置配置文件。 在Windows 终端的配置文件设置中,选择您的发行版配置文件,然后单击常规选项卡,然后您可以使用之前推荐的命令选项之一。Command linewsl 例如,如果您命名您的个人资料Ubuntu并且您的用户名是bob,那么您将设置Command line为wsl.exe -d Ubuntu -u bob 当您使用它时,您可以配置Starting directory,也就是当您为您的发行版打开终端时默认打开的那个: \\wsl$\Distro\home\username 使用前面的示例,对于名为的发行版Ubuntu和用户名bob,您将设置Starting directory为: \\wsl$\Ubuntu\home\bob SoloKyo 2022-06-20T18:45:33+08:002022-06-20T18:45:33+08:00 通过以下方式验证要在Linux 控制台中设置为默认用户的 uid id: username@host:~$ id uid=1000(username) gid=1000(username) groups=1000(username),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker) username@host:~$ 通过以下方式验证Powershell中的发行版名称wsl -l -v: PS C:\WINDOWS\system32> wsl -l -v NAME STATE VERSION * ubuntu-20.04 Running 2 docker-desktop-data Running 2 docker-desktop Running 2 PS C:\WINDOWS\system32> 在Powershell中编辑注册表: Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq ubuntu-20.04 | Set-ItemProperty -Name DefaultUid -Value 1000 现在应该好了。 Jooio 2021-02-05T23:21:38+08:002021-02-05T23:21:38+08:00 一般去root用户终端编辑.bashrc vim .bashrc 将此行附加到最后一行 su - $name
在撰写本文时,至少有三种(我们称之为 3.5)在导入的 WSL 实例中更改/设置默认用户的不同方法。虽然已经提到的两个仍然有效,但微软推荐的一种方法尚未在此问题中提及。
方法1 -
/etc/wsl.conf
当前Microsoft 推荐的在实例中设置用户名的方法是在实例中创建一个
/etc/wsl.conf
具有以下设置的:当然,将用户名更改为您的默认用户名。
退出您的发行版/实例,然后
wsl --terminate <distroname>
从 PowerShell 或 CMD 发出。重新启动时,应设置默认用户。这比基于注册表的方法更安全且不易出错。
方法 2 - 注册表项
根据@harrymc 的回答设置注册表项。
方法 3 - LxRunOffline
使用LxRunOffline设置注册表项,如@Jaime 的回答中所述。最终这与方法 2 具有相同的效果。
半方法 4 - 通过
wsl
命令行参数选择运行时用户在启动任何 WSL 实例时,可以通过以下方式选择用户名:
wsl -u username
或wsl -d distroname -u username
等例如,
wsl -d Ubuntu -u root
.旁注:这个问题专门关于在导入的实例中设置默认用户名。但是,为了完整起见,您还可以为从商店(或
wsl --install
)安装的发行版设置默认用户名:例如,如果您从商店安装了“Ubuntu 20.04”,您将使用:
这
.exe
是 Windows 中的“应用程序执行别名”。您可以通过转到Windows 系统设置中的“管理应用程序执行别名”来检查名称。正常的命令语法例如是:
但是,这不适用于通过以下命令启动的导入发行版:
试试这个未记录的方法:
regedit
并导航到键:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
DistributionName
DefaultUid
其设置为默认用户的用户 ID (uid)。这里 root 用户是 id0
而第一个用户 id 是 1000 (0x3e8
)。如果这对您的设置不起作用,您需要运行为:
有关更多信息,请参阅:
如果您在 WSL 中安装一些自定义发行版,您将不会获得“distroname.exe”命令来更改配置。您可以使用LxRunOffline更改默认用户。此工具集可以使用
choco install lxrunoffline
.获取发行版的默认用户 ID
LxRunOffline 允许您获取和设置
uid
任何已安装发行版的默认用户 ID ( )。例如,如果您有一个名为的发行版,您可以使用(get default user) 并使用发行版的名称newdistro
检查默认用户:gu
-n
该命令返回一个数字,即默认用户的用户 ID:
root
用户拥有用户0
ID1000
用户 ID。设置发行版的默认用户 ID
如果您想将 设置
root
为默认用户,您可以使用su
(set default user)-n
和发行版的名称,以及用户 ID ,-v
即0
.root
如果您使用的是Windows 终端,那么您可以为您的分发配置配置文件。
在Windows 终端的配置文件设置中,选择您的发行版配置文件,然后单击常规选项卡,然后您可以使用之前推荐的命令选项之一。
Command line
wsl
例如,如果您命名您的个人资料
Ubuntu
并且您的用户名是bob
,那么您将设置Command line
为wsl.exe -d Ubuntu -u bob
当您使用它时,您可以配置
Starting directory
,也就是当您为您的发行版打开终端时默认打开的那个:\\wsl$\Distro\home\username
使用前面的示例,对于名为的发行版
Ubuntu
和用户名bob
,您将设置Starting directory
为:\\wsl$\Ubuntu\home\bob
通过以下方式验证要在Linux 控制台中设置为默认用户的 uid
id
:通过以下方式验证Powershell中的发行版名称
wsl -l -v
:在Powershell中编辑注册表:
现在应该好了。
一般去root用户终端编辑.bashrc
将此行附加到最后一行