sch*_*ine 11 windows linux user-accounts windows-subsystem-for-linux
我已经使用wsl --export
and克隆了一个 WSL 发行版wsl --import
,但是现在,运行wsl newdistro
总是让我以 root 身份登录。我知道该lxrun
命令已被弃用并希望避免它。文档建议使用distroname.exe config
,但这不起作用,因为这个没有相应的可执行文件。
Not*_*1ds 14
在撰写本文时,至少有三种(我们称之为 3.5)在 WSL 实例中更改/设置默认用户的不同方法。虽然已经提到的两个仍然有效,但有一种微软推荐的方法在这个问题中尚未提到。
/etc/wsl.conf
当前Microsoft 推荐的在实例中设置用户名的方法是在实例中创建/etc/wsl.conf
具有以下设置的用户名:
[user]
default=username
Run Code Online (Sandbox Code Playgroud)
当然,将用户名更改为您的默认用户名。
这比基于注册表的方法更安全且不易出错。
根据@harrymc 的回答设置注册表项。
使用LxRunOffline设置注册表项,如@Jaime的回答中所述。最终这与方法 2 具有相同的效果。
wsl
命令行参数选择运行时用户在启动任何 WSL 实例时,可以通过以下方式选择用户名:
wsl -u username
或wsl -d distroname -u username
等。
例如,wsl -d Ubuntu -u root
。
正常的命令语法例如:
ubuntu config --default-user new_user_name
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于由以下命令启动的导入发行版:
wsl --distribution <DistributionName>
Run Code Online (Sandbox Code Playgroud)
试试这个未记录的方法:
regedit
并导航到密钥:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
DistributionName
DefaultUid
并将其设置为默认用户的用户 ID (uid)。这里 root 用户是 id0
而第一个用户 id 是 1000 ( 0x3e8
)。如果这对您的设置不起作用,您需要运行:
wsl --distribution ubuntu -u user_name
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅:
小智 5
通过以下方式验证要在Linux 控制台id
中设置为默认用户的 uid :
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:~$
Run Code Online (Sandbox Code Playgroud)
通过以下方式验证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>
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
现在应该好了。
归档时间: |
|
查看次数: |
5088 次 |
最近记录: |