Eu clonei uma distro WSL usando wsl --export
e wsl --import
, mas agora, a execução wsl newdistro
sempre me conecta como root. Entendo que o lxrun
comando está obsoleto e desejo evitá-lo. Os documentos recomendam usar distroname.exe config
, mas isso não funciona, pois este não possui um executável correspondente.
relate perguntas
-
execute o contêiner do docker como root
-
Comunique-se com o daemon do Docker no Windows
-
Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux
-
Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?
-
atalho do shell da área de trabalho no painel lateral do explorer
No momento em que este livro foi escrito, havia pelo menos três (vamos chamá-lo de 3.5) métodos diferentes para alterar/definir o usuário padrão em uma instância WSL importada. Embora os dois que já foram mencionados ainda funcionem, há uma maneira recomendada pela Microsoft de fazer isso que ainda não foi mencionada nesta pergunta.
Método 1 -
/etc/wsl.conf
A maneira atual recomendada pela Microsoft de definir o nome de usuário em uma instância é criar um
/etc/wsl.conf
na instância com a seguinte configuração:Alterar, é claro, o nome de usuário para ser seu nome de usuário padrão.
Saia da sua distro/instância e emita um
wsl --terminate <distroname>
do PowerShell ou CMD. Ao reiniciar, o usuário padrão deve ser definido.Isso é mais seguro e menos sujeito a erros do que os métodos baseados em registro.
Método 2 - Chave do Registro
Definindo a chave do registro de acordo com a resposta de @harrymc .
Método 3 - LxRunOffline
Usando LxRunOffline para definir a entrada do registro, conforme descrito na resposta de @Jaime . Em última análise, isso tem o mesmo efeito do Método 2.
Semimétodo 4 - Seleção do usuário em tempo de execução via
wsl
argumento de linha de comandoO nome de usuário pode ser selecionado ao iniciar qualquer instância WSL por:
wsl -u username
ouwsl -d distroname -u username
, etcPor exemplo,
wsl -d Ubuntu -u root
.Nota lateral: esta pergunta foi especificamente sobre como definir o nome de usuário padrão em uma instância importada . No entanto, para completar, você também pode definir o nome de usuário padrão para uma distribuição que foi instalada na Loja (ou
wsl --install
) com:Por exemplo, se você instalou o "Ubuntu 20.04" da Loja, você usaria:
.exe
Aqui está um "Alias de execução de aplicativo" no Windows . Você pode verificar o nome acessando "Gerenciar aliases de execução do aplicativo" nas Configurações do sistema do Windows.A sintaxe normal do comando é, por exemplo:
No entanto, isso não funciona para uma distro importada, que é iniciada pelo seguinte comando:
Tente este método não documentado:
regedit
e navegue até a chave:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
DistributionName
DefaultUid
e defina-o para o ID do usuário (uid) do seu usuário padrão. Aqui o usuário root é o id0
enquanto o primeiro id do usuário é 1000 (0x3e8
).Se isso não funcionar para sua configuração, você precisará executar como:
Para mais informações, veja :
Se você estiver instalando algumas distribuições personalizadas no WSL, não receberá um comando "distroname.exe" para alterar a configuração. Você pode usar LxRunOffline para alterar o usuário padrão. Este conjunto de ferramentas pode ser instalado no Windows usando
choco install lxrunoffline
.Obtenha o id de usuário padrão de uma distro
LxRunOffline permite que você obtenha e defina o ID de usuário padrão (
uid
) para quaisquer distribuições instaladas. Por exemplo, se você tiver uma distro nomeadanewdistro
, poderá verificar o usuário padrão usandogu
(obter usuário padrão) e-n
com o nome da distribuição:O comando retorna um número, o ID do usuário padrão:
root
usuário tem o0
ID de usuário1000
ID do usuário.Defina o ID de usuário padrão para uma distro
Se você deseja definir o
root
como o usuário padrão, pode fazê-lo usandosu
(definir usuário padrão) com-n
e o nome da distro e-v
com o id do usuário, ou seja,0
para o arquivoroot
.Se você estiver usando o Windows Terminal , poderá configurar um perfil para sua distribuição.
Nas configurações de Perfis do Terminal do Windows, selecione o perfil da sua distro, clique na guia Geral e, abaixo
Command line
, você pode usar uma das opções recomendadas anteriormente para owsl
comando.Por exemplo, se você nomeou seu perfil
Ubuntu
e seu nome de usuário ébob
, você deve definirCommand line
comowsl.exe -d Ubuntu -u bob
Enquanto você está nisso, você pode configurar o
Starting directory
, também conhecido como aquele aberto por padrão quando você abre um terminal para sua distro com:\\wsl$\Distro\home\username
Usando o exemplo anterior, para uma distro nomeada
Ubuntu
e um nome de usuáriobob
, você definiriaStarting directory
como:\\wsl$\Ubuntu\home\bob
Verifique o uid do usuário que você deseja definir como padrão em seu console Linux por
id
:Verifique o nome da distro no Powershell por
wsl -l -v
:Edite o registro no Powershell :
Já deve estar bom.
Normalmente foi para o terminal do usuário root editar o .bashrc
Acrescente esta linha ao último