Сбросить пароль в Ubuntu / Linux Bash в Windows

191

Я установил Linux Bash на Windows 10 (доступно от Microsoft), но я забыл свой пароль.

Я искал решение, но я нахожу только предложения, которые предполагают выполнение каких-либо действий перед загрузкой системы, например, доступ к режиму восстановления, но в этом случае это не сработает, поскольку эта Ubuntu является просто приложением в системе Windows и не имеет свой собственный процесс загрузки.

Как я могу сбросить свой пароль?

Махидхар К.В.
источник
4
Какой пароль вы точно потеряли? Пароль вашей учетной записи Windows?
Дэвид Фёрстер
Примером «варианта загрузки» может быть загрузка в однопользовательском режиме, установив для cmdline ядра значение «single» через grub. Для любопытных.
Кевинф
1
В WSL2 (windows 10 v1903) его изменили. Из cmd или powershell запустите оболочку ubuntu от имени пользователя root: wsl -user root. Затем: passwd <ваше имя пользователя>. выход из WSL. В следующий раз, когда откроется Ubuntu shel: sudo ls примет новый пароль root.
JDH

Ответы:

323
  • Запустите bashи запишите свое имя пользователя в Linux (оно не должно совпадать с именем пользователя в Windows), см. Как я могу узнать свое имя пользователя?
  • Закройте Bash в Ubuntu, если он работает (или следующая команда не будет выполнена).
  • В командной строке администратора Windows ( Super+ X, A) измените пользователя по умолчанию на root:

    ubuntu config --default-user root
    

Если вы используете Ubuntu 18.04 в WSL, команда изменилась на ubuntu1804, поэтому

ubuntu1804 config --default-user root
  • Теперь Bash на Ubuntu в Windows регистрирует вас как root, не спрашивая пароль
  • Используйте passwdкоманду в Bash для изменения пароля пользователя (пользователя, пароль которого вы хотите сбросить):

    passwd your_username
    
  • Измените пользователя по умолчанию обратно на обычного пользователя в командной строке Windows

    ubuntu config --default-user  your_username
    

Если вы используете Ubuntu 18.04 в WSL, команда изменилась на ubuntu1804, поэтому

ubuntu1804 config --default-user your_username

Смотрите полное видео, чтобы восстановить ваш пароль Подсистема Windows Linux https://youtu.be/dTR232yvDCE

Примечание 1: Подсистема, используемая в видео, не Ubuntu, а Kali Linux. Отсюда и разница в команде.

Примечание 2: Если вы все еще используете исходную подсистему Ubuntu, поставляемую с Anniversary Update, используйте команду lxrun . Рекомендуется обновить до версии подсистемы, распространяемой через Microsoft Store.)

TMU
источник
7
lxrunдля бета-версии WSL. Если вы устанавливаете Ubuntu из магазина приложений, команда ubuntu config --default-user root.
Энди Тяхджоно
2
Да, это альтернативный способ, но я получил ошибку Failed to set default user to: root.
Кирби
2
@Kirby: необходимо выйти из оболочки WSL перед запуском команды в командной строке Windows.
Dr01
1
Я продолжал получать Error: 0x80070057 The parameter is incorrect, поэтому я в конечном итоге следовал подсказке @ dr01 и запустил ubuntuPowerShell, затем logoutснова настроил пользователя по умолчанию. Успех 👍
skia.heliou
2
Если вы установили Ubuntu 18.04 на WSL, команда ubuntu1804вместо ubuntu. Надеюсь, это спасет от царапин на голове.
Индоминус
53

Выше не сработало. Даже после смены пользователя по умолчанию Bash всегда открывался с моим пользователем.

Так что вместо этого я сделал это, который работал:

  1. Отредактируйте этот файл (в блокноте или блокноте ++):

    %localappdata%\lxss\rootfs\etc\shadow
    
  2. Найдите вашего обычного пользователя, например:

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

    и просто удалите часть хеша (нижняя часть)

    $jsdjksadgfhsdf.saflsdf.sadf.safd
    

    Вы увидите другой хэш - я надеюсь :), так это должно выглядеть так:

    user1::17299:0:99999:7:::
    
  3. Сохранить файл

  4. Запустите Bash снова с правами суперпользователя и установите свой пароль

     sudo bash
     passwd <your-user-name> 
    

    Теперь вы можете установить новый пароль без необходимости ввода предыдущего.

Владимир Йирасек
источник
9
это работает, но официальный каталог теперь похож на% localappdata% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ etc \ shadow
Mauro Destro
11
Это лучший ответ на сегодняшний день . Чтобы найти путь к вашему shadowфайлу, вы можете использовать эту мерзость PowerShell: Get-ChildItem -Path C:\ -Filter shadow -Recurse -ErrorAction SilentlyContinue -Forceбезумно многословную версию find /mnt/c/ -name shadowкак в исполнении, так и в результатах. Нет необходимости в повышенных привилегиях для редактирования файла, но убедитесь, что ваше окно bash закрыто, прежде чем вы это сделаете.
Расс
1
Это победитель! Отлично работал, когда первый ответ не.
Ким
1
Принятый ответ получил меня «Ошибка: 0x80070057 Параметр неверен.». (и нет, консоль не была в прежнем режиме). Это работало без проблем;
Кристи Диаконеску
1
Этот ответ работал именно так, как указано выше. Первый ответ не работал для меня.
Шанемейстер
27

Изменить Это больше не работает, если у вас есть установленный в магазине дистрибутив WSL.

Чтобы добавить к ответу Tmu, вот скрипт Powershell ( gist ), который автоматизирует процесс (включая автоматическое определение текущего имени пользователя по умолчанию)

# 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
Ричард Сзалай
источник
получить ошибку: 0 x 8 0 0 7 0 0 0 2 в powershell
Нитин Савант
1

По состоянию на 2019-09-05 существует процесс, который намного проще, чем существующие ответы (которые в основном настолько устарели, что вообще не работают).

В командной строке администратора Windows ( Super+ X, A) вы можете войти в корневую учетную запись Ubuntu с помощью

wsl --user root

Затем измените пароль, как обычно, с

passwd

который в интерактивном режиме запрашивает у вас новый пароль (дважды).

Никто
источник
0

Для тех из вас, кто потерял пароль root, у меня работало обновление до Ubuntu 18.04 LTS через Windows Store. Обратите внимание, что в магазине Windows есть две разные опции:

  1. Ubuntu
  2. Ubuntu 18.04 LTS ( выберите это )

Чтобы проверить текущую версию, запустите следующее от имени любого пользователя:

В командной строке введите:

cat /etc/*release

Вы должны увидеть строку в выводе, которая говорит:

DISTRIB_RELEASE=16.01

Если вы видите это, то обязательно обновитесь до 18.04 , и он предложит вам создать новые учетные данные UNIX.

Янак Мина
источник