Điểm:1

Đã xóa tất cả người dùng trong WSL

lá cờ nu

Tôi sử dụng Wsl Ubuntu 20.04 LTS. Tôi không biết tại sao nhưng tất cả người dùng đã bị xóa. Tôi đã tạo một người dùng mới. tôi ước tôi đã không làm

mật khẩu:

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

và bây giờ

$ người dùng gốc
adduser: Chỉ root mới có thể thêm người dùng hoặc nhóm vào hệ thống.
$ sudo adduser gốc
sudo: người dùng không xác định: root
sudo: không thể khởi chạy plugin chính sách

Tôi không thể thay đổi mật khẩu vì nó ở chế độ chỉ đọc.

-Làm thế nào tôi có thể lấy lại root.
-Tôi có thể xóa tetemp không? (wsl bắt đầu với quyền root nếu tôi có thể)

lá cờ in
Bạn chỉ có thể xóa hình ảnh WSL và bắt đầu lại. Đó sẽ là cách nhanh nhất để mọi thứ hoạt động trở lại.
NotTheDr01ds avatar
lá cờ vn
Điều gì xảy ra khi bạn chỉ chạy `wsl` (hoặc `wsl `)? Tôi vừa thiết lập một phiên bản Ubuntu mới, tạo một người dùng (thứ hai) mới, xóa mọi thứ trừ người dùng đó khỏi `/etc/passwd`. Sau khi thoát, tôi vẫn là UID 0 khi bắt đầu sao lưu phiên bản và có thể chỉnh sửa `/etc/passwd` ở trạng thái đó. Tuy nhiên, tôi *không thể* khởi động bằng `wsl -u root`, nhưng tôi có thể không có `-u root`.
Atduyar avatar
lá cờ nu
@NotTheDr01ds Tôi có thể chỉnh sửa passwd vì nó chỉ đọc.và tôi thử `-u root` PS C:\Users\Kullanic> wsl -u root => Không tìm thấy người dùng.
NotTheDr01ds avatar
lá cờ vn
@Atduyar Được rồi, ít nhất tôi có thể sao chép nó ngay bây giờ. Tôi nghĩ rằng tôi đã phải thêm người dùng *sau khi* xóa `/etc/passwd`. Lần cuối cùng tôi thêm người dùng trong khi `/etc/passwd` vẫn còn nguyên vẹn, sau đó xóa tất cả các dòng *ngoại trừ* người dùng `tetemp`.
Điểm:0
lá cờ vn

Đó là khó khăn. Thông thường wsl -u gốc cơ chế phục hồi sẽ không hoạt động nếu không có nguồn gốc người dùng trong /etc/passwd, và khi nhiệt độ được thêm vào, nó trở thành người dùng mặc định (không có sudo quyền).

Tôi thấy ít nhất hai con đường phía trước. Tạo một phiên bản mới (và sao chép các tệp) hoặc cố gắng khôi phục phiên bản bị hỏng:

  • Đầu tiên, sau khi thử điều này trong một phiên bản thử nghiệm, tôi có thể vẫn truy cập phiên bản trong Windows bằng cách sử dụng \wsl$\Ubuntu con đường. Điều đó sẽ không cho phép bạn sửa chữa /etc/passwd, nhưng ít nhất nó sẽ cho phép bạn sao chép bất kỳ tệp nào bạn cần khôi phục từ phiên bản.

    Bạn có thể cài đặt phiên bản thứ hai của cùng một bản phân phối Ubuntu mà bạn đã cài đặt từ Cửa hàng:

    1. Bắt đầu PowerShell với tư cách quản trị viên

    2. Chạy:

       Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\' | Đối tượng ở đâu {$_.Name -eq 'install.tar.gz' }
      
    3. Đầu ra sẽ có vị trí của cài đặt.tar.gz đã được sử dụng để tạo phiên bản gốc.

    4. Tạo một thư mục nơi phiên bản mới sẽ được tạo. tôi sử dụng một cái gì đó như %userprofile%\WSL\NewUbuntu.

    5. Từ PowerShell thông thường, không dành cho quản trị viên, hãy chạy

      wsl --import NewUbuntu ".\path\to\WSL\NewUbuntu" "<path_with_tarball>\intall.tar.gz" --version 2`
      
    6. Bắt đầu phiên bản mới bằng cách sử dụng wsl -d NewUbuntu. bạn sẽ được nguồn gốc theo mặc định.

    7. Thêm người dùng thường xuyên của bạn với:

      adduser <tên người dùng>
      usermod -aG adm,dialout,cdrom,soft,sudo,audio,dip,video,plugdev,netdev <tên người dùng>
      

      Đây là tập hợp các nhóm được tạo cho người dùng mặc định trong Ubuntu trên WSL.

    8. Đặt người dùng này làm mặc định trong WSL bằng cách tạo /etc/wsl.conf như đã đề cập trong câu trả lời này.

    Giờ đây, bạn có thể sao chép các tệp từ phiên bản cũ của mình (\wsl$\Ubuntu) sang cái mới (\wsl$\NewUbuntu).

    Cuối cùng, để xóa bản sao cũ, khi bạn chắc chắn rồi bạn có tất cả các tệp quan trọng của mình, wsl --unregister <distroname>.

Có những lựa chọn khả thi mà tôi có thể nghĩ ra có thể cho phép bạn sửa chữa / phục hồi ví dụ hiện có. Tôi chưa kiểm tra từng bước này, nhưng hầu hết mọi thứ ở đây là thứ tôi đã thực hiện lúc này hay lúc khác:

  • Cái này tôi không khuyên dùng, vì nó có tiềm năng cuối cùng để đối tượng ở trạng thái không ổn định:

    • Chuyển đổi phiên bản thành WSL1 bằng cách sử dụng wsl --set-phiên bản Ubuntu 1
    • Trong Windows, điều hướng đến vị trí của hệ thống tệp lớp phủ WSL1 trong %userprofile%\AppData\Local\Packages\Canonical...\LocalState\rootfs\etc\passwd.
    • Sửa chữa của bạn /etc/passwd sử dụng ứng dụng Windows xử lý kết thúc dòng Linux. Một lần nữa, điều này có thể có vấn đề, vì cuối cùng nó có thể gây ra tham nhũng hệ thống tập tin trong WSL. Nó có thể là dễ dàng nhất và an toàn nhất để chỉ xóa bỏ các mật khẩu vì chúng tôi tin rằng làm như vậy sẽ cho phép bạn đăng nhập lại với tên UID 0 và sau đó tạo lại nguồn gốc người dùng.
    • Chuyển đổi nó trở lại WSL2, nếu muốn.
  • Hoặc, sử dụng một phiên bản khác để sửa lỗi đầu tiên:

    • Tạo một tarball của trường hợp bị hỏng của bạn với wsl --export Ubuntu fixme.tar.

    • Quay lại tùy chọn đầu tiên ở trên, nơi chúng tôi đã tạo một phiên bản mới và thực hiện các bước đó. Nhưng hãy gọi ví dụ như "UbuntuTemp".

    • Bên trong phiên bản mới (tạm thời) đó:

      mkdir ~/fixme
      cd ~/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 .
      
    • Thoát phiên bản Ubuntu tạm thời.

    • Trong PowerShell, hãy tạo một thư mục cho phiên bản Ubuntu cố định của bạn, sau đó:

      wsl --import Ubuntu20_04 "path/you/just/created" "path/to/fixed.tar" --version 2
      
    • Bắt đầu phiên bản cố định (hy vọng) với wsl -d Ubuntu20_04.

    • Đặt người dùng thông thường của bạn làm mặc định bằng cách sử dụng /etc/wsl.conf mỗi câu trả lời này.

    • Giả sử rằng nó hoạt động chính xác, hãy đặt phiên bản làm mặc định bằng cách sử dụng:

      wsl --set-default Ubuntu20_04
      

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.