Réinitialiser le mot de passe dans Ubuntu / Linux Bash sous Windows

191

J'ai installé Linux Bash sur Windows 10 (disponible auprès de Microsoft), mais j'ai oublié mon mot de passe.

J'ai cherché une solution mais je ne trouve que des suggestions qui impliquent de faire quelque chose avant le démarrage du système, comme accéder au mode de récupération, mais cela ne fonctionnera pas dans ce cas car Ubuntu n'est qu'une application dans un système Windows et n'a pas son propre processus de démarrage.

Comment puis-je réinitialiser mon mot de passe?

Maheedhar KV
la source
4
Quel mot de passe avez-vous perdu exactement? Le mot de passe de votre compte Windows?
David Foerster
un exemple "option de démarrage" consisterait à démarrer en mode utilisateur unique en définissant la ligne de commande du noyau sur "single" via grub. Pour les curieux.
kevinf
1
Dans WSL2 (Windows 10 v1903), il a changé. Depuis cmd ou powershell, démarrez un shell ubuntu en tant que root: wsl -user root then: passwd <votre nom d'utilisateur>. sortie wsl. La prochaine fois que Ubuntu Shel s'ouvre: sudo ls acceptera le nouveau mot de passe root.
Jdh

Réponses:

323
  • Exécutez bashet notez votre nom d'utilisateur Linux (il ne doit pas nécessairement correspondre à votre nom d'utilisateur Windows), voir Comment puis-je connaître mon nom d'utilisateur?
  • Fermez Bash sous Ubuntu s’il est en cours d’exécution (sinon la prochaine commande échouera).
  • Dans l'invite de commande de l'administrateur Windows ( Super+ X, A), remplacez l'utilisateur par défaut par root:

    ubuntu config --default-user root
    

Si vous utilisez Ubuntu 18.04 dans WSL, la commande a changé ubuntu1804, donc

ubuntu1804 config --default-user root
  • Maintenant, Bash sur Ubuntu sous Windows vous connecte en tant que root sans demander de mot de passe
  • Utilisez la passwdcommande de Bash pour modifier le mot de passe de l'utilisateur (l'utilisateur dont vous souhaitez réinitialiser le mot de passe):

    passwd your_username
    
  • Redéfinissez l'utilisateur par défaut sur votre utilisateur normal dans l'invite de commande Windows

    ubuntu config --default-user  your_username
    

Si vous utilisez Ubuntu 18.04 dans WSL, la commande a changé ubuntu1804, donc

ubuntu1804 config --default-user your_username

Regardez la vidéo complète pour récupérer votre mot de passe Sous-système Windows Linux https://youtu.be/dTR232yvDCE

Remarque 1: le sous-système utilisé dans la vidéo n'est pas Ubuntu, mais Kali Linux. D'où la différence dans la commande.

Remarque 2: Si vous utilisez toujours le sous-système Ubuntu d'origine fourni avec la mise à jour d'anniversaire, utilisez la commande lxrun . La mise à niveau vers la version du sous-système distribuée via Microsoft Store est recommandée.)

Tmu
la source
7
lxrunest pour la version bêta de WSL. Si vous installez ubuntu à partir de l'App Store, la commande est ubuntu config --default-user root.
Endy Tjahjono
2
Oui, cela est une autre façon , mais je me suis l'erreur: Failed to set default user to: root.
Kirby
2
@Kirby: vous devez vous déconnecter du shell WSL avant d'exécuter la commande à l'invite de commande Windows.
dr01
1
Je n'arrêtais pas de Error: 0x80070057 The parameter is incorrectsuivre, j'ai donc suivi le repère de @ dr01, puis exécuté ubuntudans PowerShell logout, puis configuré à nouveau l'utilisateur par défaut. Succès
skia.heliou
2
Si vous avez installé Ubuntu 18.04 sur WSL, la commande est à la ubuntu1804place de ubuntu. J'espère que cela vous épargnera des maux de tête.
Indominus
53

Ce qui précède n'a pas fonctionné. Même après avoir changé d'utilisateur par défaut, Bash a toujours ouvert avec mon utilisateur.

Alors au lieu de cela, j'ai fait ceci, qui a fonctionné:

  1. Editez ce fichier (dans Notepad ou Notepad ++):

    %localappdata%\lxss\rootfs\etc\shadow
    
  2. Trouvez votre utilisateur normal, par exemple:

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

    et retirez simplement la partie de hachage (en dessous)

    $jsdjksadgfhsdf.saflsdf.sadf.safd
    

    vous verrez un hachage différent - j'espère :) il devrait donc ressembler à:

    user1::17299:0:99999:7:::
    
  3. Sauvegarder le fichier

  4. Redémarrez Bash avec les privilèges root et définissez votre mot de passe

     sudo bash
     passwd <your-user-name> 
    

    Vous pouvez maintenant définir un nouveau mot de passe sans avoir à entrer le précédent.

Vladimir Jirasek
la source
9
cela fonctionne mais le répertoire officiel est maintenant similaire à% localappdata% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ etc \ ombre
Mauro Destro
11
C'est de loin la meilleure réponse . Pour trouver le chemin d'accès à votre shadowfichier, vous pouvez utiliser cette abomination PowerShell: Get-ChildItem -Path C:\ -Filter shadow -Recurse -ErrorAction SilentlyContinue -Forceune version extrêmement prolixe de find /mnt/c/ -name shadowl'exécution et des résultats. Pas besoin de privilèges élevés pour éditer le fichier, mais assurez-vous que votre fenêtre bash est fermée avant de le faire.
Russ le
1
C'est le gagnant! A bien fonctionné alors que la première réponse n’avait
Kim
1
La réponse acceptée m'a valu "Erreur: 0x80070057 Le paramètre est incorrect.". (et non, la console n'était pas en mode hérité). Cela a fonctionné parfaitement.
Cristi Diaconescu
1
Cette réponse a fonctionné exactement comme indiqué ci-dessus. La première réponse n'a pas fonctionné pour moi.
Shanemeister
27

Modifier Ceci ne fonctionne plus si vous avez une distribution WSL installée par le magasin.

Pour ajouter à la réponse de Tmu, voici un script Powershell ( gist ) qui automatise le processus (y compris la détection automatique du nom d'utilisateur par défaut actuel).

# 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
la source
obtenir l'erreur: 0 x 8 0 0 7 0 0 0 2 dans powershell
Nitin Sawant
1

Au 2019-09-05, il existe un processus beaucoup plus simple que les réponses existantes (qui sont pour la plupart si obsolètes qu'elles ne fonctionnent pas du tout).

Dans l'invite de commande de l'administrateur Windows ( Super+ X, A), vous pouvez vous connecter au compte racine Ubuntu avec

wsl --user root

Puis changez le mot de passe comme vous le feriez habituellement, avec

passwd

qui vous demande interactivement un nouveau mot de passe (deux fois).

Personne
la source
0

Pour ceux d'entre vous qui ont perdu le mot de passe root, ce qui a fonctionné pour moi a été la mise à jour vers Ubuntu 18.04 LTS via le Windows Store. Notez que le Windows Store a deux options distinctes:

  1. Ubuntu
  2. Ubuntu 18.04 LTS ( Choisissez celui-ci )

Pour vérifier votre version actuelle, exécutez ce qui suit en tant qu'utilisateur:

A l'invite de commande, entrez:

cat /etc/*release

Vous devriez voir une ligne dans la sortie qui dit:

DISTRIB_RELEASE=16.01

Si vous voyez cela, mettez à jour définitivement vers 18.04 et vous serez invité à créer de nouvelles informations d'identification UNIX.

Janac Meena
la source