Redefina a senha no Ubuntu / Linux Bash no Windows

191

Instalei o Linux Bash no Windows 10 (disponível na Microsoft), mas esqueci minha senha.

Procurei uma solução, mas só encontro sugestões que envolvam fazer algo antes do sistema inicializar, como acessar o modo de recuperação, mas que não funcionará nesse caso, pois este Ubuntu é apenas um aplicativo dentro de um sistema Windows e não possui seu próprio processo de inicialização.

Como redefinir minha senha?

Maheedhar KV
fonte
4
Qual senha você perdeu exatamente? A senha da sua conta do Windows?
David Foerster
um exemplo de "opção de inicialização" seria inicializar no modo de usuário único, configurando o cmdline do kernel como "único" via grub. Para aqueles curiosos.
kevinf
11
No WSL2 (Windows 10 v1903), foi alterado. No cmd ou no powershell, inicie um shell do ubuntu como root: wsl -user root Então: passwd <seu nome de usuário>. saída wsl. Da próxima vez que o ubuntu shel for aberto: o sudo ls aceitará uma nova senha root.
jdh 9/07

Respostas:

323
  • Execute bashe anote seu nome de usuário do Linux (isso não precisa corresponder ao seu nome de usuário do Windows), consulte Como posso descobrir meu nome de usuário?
  • Feche o Bash no Ubuntu se estiver em execução (ou o próximo comando falhará).
  • No prompt de comando do Windows admin ( Super+ X, A) , altere o usuário padrão para root:

    ubuntu config --default-user root
    

Se você estiver usando o Ubuntu 18.04 na WSL, o comando foi alterado para ubuntu1804, então

ubuntu1804 config --default-user root
  • Agora o Bash no Ubuntu no Windows efetua login como root sem pedir senha
  • Use o passwdcomando no Bash para alterar a senha do usuário (o usuário cuja senha você deseja redefinir):

    passwd your_username
    
  • Mude o usuário padrão de volta para o usuário normal no prompt de comando do Windows

    ubuntu config --default-user  your_username
    

Se você estiver usando o Ubuntu 18.04 na WSL, o comando foi alterado para ubuntu1804, então

ubuntu1804 config --default-user your_username

Assista ao vídeo completo para recuperar sua senha Windows Subsystem Linux https://youtu.be/dTR232yvDCE

Nota 1: O subsistema usado no vídeo não é o Ubuntu, mas o Kali Linux. Daí a diferença no comando.

Nota 2: Se você ainda estiver usando o subsistema Ubuntu original que acompanha a Atualização de Aniversário, use o comando lxrun . É recomendável atualizar para a versão do subsistema distribuída via Microsoft Store.)

Tmu
fonte
7
lxruné para a versão beta do WSL. Se você instalar o ubuntu a partir da loja de aplicativos, o comando é ubuntu config --default-user root.
Endy Tjahjono
2
Sim, esta é uma forma alternativa, mas eu tenho o erro: Failed to set default user to: root.
Kirby
2
@ Kirby: você deve sair do shell WSL antes de executar o comando no prompt de comando do Windows.
22418 dr01
11
Como eu continuava recebendo Error: 0x80070057 The parameter is incorrect, acabei seguindo a sugestão de @ dr01 e executei ubuntuno PowerShell; depois logout, configurei o usuário padrão novamente. 👍 #
skia.heliou
2
Se você instalou o ubuntu 18.04 no WSL, o comando é em ubuntu1804vez de ubuntu. Espero que isso economize alguns coçar a cabeça.
Indominus
53

O acima não funcionou. Mesmo depois de alterar o usuário padrão, o Bash sempre era aberto com meu usuário.

Então, em vez disso, fiz isso, que funcionou:

  1. Edite este arquivo (no bloco de notas ou no bloco de notas ++):

    %localappdata%\lxss\rootfs\etc\shadow
    
  2. Encontre seu usuário normal, por exemplo:

    user1:$jsdjksadgfhsdf.saflsdf.sadf.safd:17299:0:99999:7:::
    

    e simplesmente remova a parte do hash (parte abaixo)

    $jsdjksadgfhsdf.saflsdf.sadf.safd
    

    você verá um hash diferente - espero :), por isso deve se parecer com:

    user1::17299:0:99999:7:::
    
  3. Salve o arquivo

  4. Inicie o Bash novamente com privilégios de root e defina sua senha

     sudo bash
     passwd <your-user-name> 
    

    Agora você pode definir uma nova senha sem precisar digitar a senha anterior.

Vladimir Jirasek
fonte
9
isso funciona, mas o diretório oficial agora é semelhante a% localappdata% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ etc \ shadow
Mauro Destro
11
Esta é a melhor resposta de longe . Para encontrar o caminho para o seu shadowarquivo, você pode usar esta abominação do PowerShell: Get-ChildItem -Path C:\ -Filter shadow -Recurse -ErrorAction SilentlyContinue -Forceque é uma versão incrivelmente detalhada da find /mnt/c/ -name shadowexecução e dos resultados. Não há necessidade de privilégios elevados para editar o arquivo, mas verifique se a janela do bash está fechada antes de fazê-lo.
Russ
11
Este é o vencedor! Funcionou muito bem quando a primeira resposta não.
Kim
11
A resposta aceita me deu 'Erro: 0x80070057 O parâmetro está incorreto.'. (e não, o console não estava no modo legado). Isso funcionou perfeitamente;
Cristi Diaconescu
11
Esta resposta funcionou exatamente como descrito acima. A primeira resposta não funcionou para mim.
Shanemeister 20/02
27

Editar Isso não funcionará mais se você tiver uma distribuição de WSL instalada na loja.

Para adicionar à resposta de Tmu, aqui está um script do Powershell ( gist ) que automatiza o processo (incluindo a detecção automática do nome de usuário padrão atual)

# Resets the password for the default LXSS / WSL bash user
$lxssUsername = (Get-ItemProperty HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss).DefaultUsername
lxrun /setdefaultuser root
bash -c "passwd $lxssUsername"
lxrun /setdefaultuser $lxssUsername
Richard Szalay
fonte
obtendo erro: 0 x 8 0 0 7 0 0 0 2 no powershell
Nitin Sawant
1

A partir de 2019-09-05, existe um processo muito mais simples do que as respostas existentes (que geralmente são tão desatualizadas que nem funcionam).

No prompt de comando do Windows admin ( Super+ X, A) , você pode fazer login na conta raiz do Ubuntu com

wsl --user root

Em seguida, altere a senha como faria normalmente, com

passwd

que solicita interativamente uma nova senha (duas vezes).

Ninguém
fonte
0

Para aqueles que perderam a senha de root, o que funcionou para mim foi a atualização para o Ubuntu 18.04 LTS através da Windows Store. Observe que a Windows Store possui duas opções distintas:

  1. Ubuntu
  2. Ubuntu 18.04 LTS ( Escolha este )

Para verificar sua versão atual, execute o seguinte como qualquer usuário:

No prompt de comando, digite:

cat /etc/*release

Você deve ver uma linha na saída que diz:

DISTRIB_RELEASE=16.01

Se você vir isso, atualize definitivamente para o 18.04 , e ele solicitará que você crie novas credenciais UNIX.

Janac Meena
fonte