Рейтинг:1

Удалил всех пользователей в WSL

флаг nu

Я использую Wsl Ubuntu 20.04 LTS. Не знаю почему, но все пользователи были удалены. Я создал нового пользователя. лучше бы я этого не делал

пароль:

tetemp:x:1000:100::/home/tetemp:

и сейчас

$ adduser root
adduser: Только root может добавить пользователя или группу в систему.
$ sudo adduser корень
sudo: неизвестный пользователь: root
sudo: не удалось инициализировать плагин политики

Я не могу изменить пароль, потому что он только для чтения.

-Как я могу получить root обратно.
-Можно ли удалить тетемп? (wsl запускается как root, если я могу)

флаг in
Вы можете просто стереть образ WSL и начать заново. Это был бы самый быстрый способ восстановить работоспособность.
NotTheDr01ds avatar
флаг vn
Что происходит, когда вы просто запускаете `wsl` (или `wsl `)? Я только что установил новый экземпляр Ubuntu, создал нового (второго) пользователя, удалил все, кроме этого пользователя, из `/etc/passwd`. После выхода у меня все еще UID 0, когда я запускаю резервную копию экземпляра и могу редактировать `/etc/passwd` в этом состоянии. Однако я *не могу* запуститься как `wsl -u root`, но могу без `-u root`.
Atduyar avatar
флаг nu
@ NotTheDr01ds Я могу редактировать пароль, потому что он только для чтения.и я пробую `-u корень` PS C:\Users\Kullanic> wsl -u root => Пользователь не найден.
NotTheDr01ds avatar
флаг vn
@Atduyar Хорошо, по крайней мере, сейчас я могу воспроизвести это. Думаю, мне пришлось добавить пользователя *после* удаления `/etc/passwd`. В последний раз, когда я добавил пользователя, когда `/etc/passwd` был еще не поврежден, затем удалил все строки *кроме* пользователя tetemp.
Рейтинг:0
флаг vn

Это тяжело. Обычный wsl -u корень механизм восстановления не будет работать без корень пользователь в /etc/passwd, и когда темп был добавлен, он стал пользователем по умолчанию (без судо разрешения).

Я вижу как минимум два пути вперед. Либо создайте новый экземпляр (и скопируйте файлы), либо попытайтесь восстановить сломанный:

  • Во-первых, попробовав это в тестовом экземпляре, я может по-прежнему получать доступ к экземпляру под Windows, используя \wsl$\Убунту дорожка. Это не позволит вам исправить /etc/passwd, но это, по крайней мере, позволит вам скопировать любые файлы, необходимые для восстановления из экземпляра.

    Вы можете установить второй экземпляр точно такого же дистрибутива Ubuntu, который вы установили из Магазина:

    1. Запустите PowerShell от имени администратора

    2. Бег:

       Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\' | Где-Объект {$_.Name -eq 'install.tar.gz' }
      
    3. Вывод будет иметь местоположение установить.tar.gz который использовался для создания исходного экземпляра.

    4. Создайте каталог, в котором будет создан новый экземпляр. я использую что-то вроде %userprofile%\WSL\НьюУбунту.

    5. Из обычного PowerShell без прав администратора запустите

      wsl --import NewUbuntu ".\path\to\WSL\NewUbuntu" "<path_with_tarball>\intall.tar.gz" --version 2`
      
    6. Запустите новый экземпляр, используя wsl -d НоваяUbuntu. Ты будешь корень по умолчанию.

    7. Добавьте своего обычного пользователя с помощью:

      adduser <имя пользователя>
      usermod -aG adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev <имя пользователя>
      

      Это набор групп, который создается для пользователя по умолчанию в Ubuntu на WSL.

    8. Сделайте этого пользователя по умолчанию в WSL, создав /etc/wsl.conf как упоминалось в этот ответ.

    Теперь вы должны иметь возможность копировать файлы из вашего старого экземпляра (\wsl$\Убунту) на новый (\wsl$\НьюУбунту).

    В конечном счете, чтобы удалить старую копию, когда вы Конечно у вас есть все ваши важные файлы, wsl --unregister <имя дистрибутива>.

Я могу придумать возможные варианты, которые могут позволить вам ремонт/восстановление существующий экземпляр. Я не проверял их шаг за шагом, но почти все, что здесь есть, я делал в тот или иной момент:

  • Этот я не рекомендую, так как он имеет потенциал чтобы в конечном итоге оставить экземпляр в нестабильном состоянии:

    • Преобразуйте экземпляр в WSL1, используя wsl --set-версия Ubuntu 1
    • В Windows перейдите к расположению файловой системы оверлея WSL1 в %userprofile%\AppData\Local\Packages\Canonical...\LocalState\rootfs\etc\passwd.
    • Исправьте свой /etc/passwd с помощью приложения Windows, которое обрабатывает окончания строк Linux. Опять же, это может быть проблематично, так как в конечном итоге может вызвать повреждение файловой системы в WSL. Возможно, проще всего и безопаснее просто удалять в пароль файл, так как мы считаем, что это позволит вам снова войти в систему как UID 0, а затем повторно создать корень пользователь.
    • Преобразуйте его обратно в WSL2, если хотите.
  • Или используйте другой экземпляр, чтобы исправить первый:

    • Создайте архив вашего сломанного экземпляра с помощью wsl --export Ubuntu fixme.tar.

    • Вернитесь к первому варианту выше, где мы создали новый экземпляр, и выполните эти шаги. Но назовите экземпляр как-то вроде «UbuntuTemp».

    • Внутри этого нового (временного) экземпляра:

      каталог ~/fixme
      компакт-диск ~/fixme
      sudo tar --xattrs-include="security.capability" -xvf /mnt/c/path/to/fixme.tar
      sudo cp /etc/passwd ~/fixme/etc/passwd
      sudo tar --xattrs -cvf /mnt/c/path/to/fixed.tar .
      
    • Выйдите из временного экземпляра Ubuntu.

    • В PowerShell создайте каталог для фиксированного экземпляра Ubuntu, а затем:

      wsl --import Ubuntu20_04 "путь/вы/только что/созданный" "путь/к/fixed.tar" --версия 2
      
    • Запустите фиксированный (надеюсь) экземпляр с помощью wsl -d Ubuntu20_04.

    • Установите своего обычного пользователя по умолчанию, используя /etc/wsl.conf за этот ответ.

    • Предполагая, что он работает правильно, установите экземпляр по умолчанию, используя:

      wsl --set-по умолчанию Ubuntu20_04
      

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.