Tôi đã xóa tập tin của Cameron / etc / passwd và không thể đăng nhập


22

Tôi đã cố gắng thay đổi tên người dùng và thư mục chính của tôi ( /home/username) và hệ thống của tôi bắt đầu gặp sự cố. Tôi đã xóa các passwdtập tin nhưng tôi đã có một bản sao lưu có tên passwd_bkp. Tôi cố gắng để đổi tên này passwd_bkpnhư passwdvà nó đã không làm việc. Không có lệnh nào được thực thi ... Tôi đang ở trong một cửa sổ đầu cuối.

Tôi đã khởi động lại hệ thống của mình và bây giờ tôi không thể đăng nhập. GRUB cung cấp hai tùy chọn: Linux và chế độ khôi phục.

Tôi đã cố mở một phiên làm root nhưng nó nói hệ thống tập tin bị hỏng. Tôi không thể truy cập các tập tin của tôi.

Tôi đã mất tất cả các tập tin của tôi?


1
Đối với câu hỏi tiếp theo của bạn: Thay thế mật khẩu của bạn, sử dụng kỹ thuật khôi phục. Xem: Askubfox.com/questions/24006/ Mạnh
david6

1
@ david6 Khi người dùng không thể đăng nhập vì không có /etc/passwdtệp , bạn cũng không thể đặt lại mật khẩu. Bạn phải khôi phục (hoặc tạo lại) passwdtệp. Và một khi đã xong, thường không cần thiết lập lại mật khẩu.
Eliah Kagan

@Eliah Kagan: Đồng ý, nhưng tôi đã trả lời câu hỏi tiếp theo, sau khi / etc / passwd được (được cho là) ​​được khôi phục từ bản sao lưu.
david6 ngày

Bạn sẽ cần phải cụ thể hơn về lỗi.
psusi

Câu trả lời:


32

Không, với mô tả của bạn, bạn không mất bất kỳ tệp nào của mình (ngoại trừ /etc/passwd, bạn đã xóa, nhưng bạn đã sao lưu).

Khởi động đĩa CD / DVD trực tiếp Ubuntu hoặc ổ đĩa flash USB trực tiếp. Chọn Try Ubuntu(không Install Ubuntu). Khi máy tính để bàn tải, hãy mở cửa sổ Nautilus (trình duyệt tệp). Bạn có thể tìm thấy phân vùng cho hệ thống Ubuntu của bạn Devices. Nhấn vào nó để gắn kết nó.

Bây giờ bạn có thể khôi phục lại bản sao lưu. Bạn phải làm điều đó như root, tuy nhiên. Đây là một cách khá dễ dàng để làm điều đó.

  1. Mở cửa sổ Terminal ( Ctrl+ Alt+ T). Trong Terminal, nhập cdvà nhập Spacekhóa, nhưng chưa nhấn Enter.

  2. Trong Nautilus, tìm etcthư mục bên trong hệ thống Ubuntu đã cài đặt. (Điều này không giống với etcthư mục cho CD trực tiếp. Thư mục etcbên trong hệ thống Ubuntu đã cài đặt nằm trong phân vùng bạn vừa gắn.)

  3. Kéo etcthư mục này vào Terminal, nó sẽ dán đường dẫn đầy đủ của nó vào Terminal, hoàn thành cd ...lệnh.

  4. Nhấn Enterđể chạy lệnh. Bây giờ bạn đang ở trong thư mục chứa passwdtệp của bạn . Tôi giả sử rằng tập tin sao lưu của bạn passwd_bkp, cũng nằm ở đây.

  5. Chạy lệnh này:

    sudo cp passwd_bkp passwd
    

Điều đó khôi phục passwdtệp từ bản sao lưu của bạn, vì vậy bây giờ bạn sẽ có thể khởi động lại, xóa ổ đĩa flash CD / DVD hoặc USB và khởi động lại vào hệ thống Ubuntu đã cài đặt của bạn. Hệ thống Ubuntu đã cài đặt của bạn sẽ hoạt động trở lại.


Trong tương lai, bạn nên biết rằng nó không được khuyến khích để chỉnh sửa bằng tay /etc/passwd, /etc/group, /etc/shadow, hoặc /etc/gshadow. Thay vào đó, bạn nên sử dụng các tiện ích được cung cấp như một phần của Ubuntu để thực hiện bất kỳ thay đổi nào bạn cần cho người dùng và nhóm trên hệ thống của mình. Bạn có thể biết rằng bạn có thể chỉnh sửa điều này trong Cài đặt hệ thống hoặc với users-admin. Nhưng cũng có những tiện ích dòng lệnh rất mạnh cho việc này, nó vẫn an toàn và dễ dàng hơn nhiều so với việc tự chỉnh sửa các tệp cấu hình. Đây là tài liệu về các tiện ích như vậy có liên quan nhất trong Ubuntu:

Bạn có thể thay đổi tên người dùng của bạn với một số tiện ích. Câu trả lời này giải thích một cách chi tiết. Tuy nhiên, bạn cần lưu ý (như hiện đang được đưa ra bởi một nhận xét ở đó) rằng một số ứng dụng cho rằng tên người dùng của bạn vẫn giữ nguyên. Vì vậy, thay đổi tên người dùng của bạn có thể gây ra một số vấn đề.


Cảm ơn bạn rất nhiều. Bây giờ là bốn giờ sáng ở miền nam Brazil ... Tôi đã rất lo lắng đến mức không ngủ được. Tôi sẽ thử điều đó ...
joao Rodrigo leao

2
Nếu bạn không tạo bản sao lưu, hãy thử sử dụng /etc/passwd-hoặc /var/backups/passwd.bak. Hãy chắc chắn để đặt quyền chính xác. Ví dụ:sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn

4

Thay thế cho việc khởi động một livecd, bạn có thể nhấn evào menu grub để chỉnh sửa mục nhập chế độ cứu hộ và thêm init=/bin/shvào các đối số kernel. Điều này sẽ thả bạn ngay vào một vỏ gốc, nơi bạn có thể sao chép tệp sao lưu trở lại ban đầu sau khi kết nối lại hệ thống tệp đọc-ghi với mount -o remount,rw /.


1
Bạn có chắc chắn điều này sẽ làm việc? Không có /etc/passwd, không có người dùng nào được gọi là root và không có người dùng nào có uid = 0 . Các tiện ích cần thiết có nhất thiết phải làm việc trong những điều kiện bất thường không?
Eliah Kagan

1
@EliahKagan, luôn có một người dùng có uid = 0 vì đó là uid mà kernel bắt đầu quá trình đầu tiên. cphoặc mvkhông cần / etc / passwd.
psusi

Điều này đã cứu cái mông ngu ngốc của tôi! tôi chỉnh sửa thủ công trên / etc / bóng liên quan đến công cụ crontab. Tôi không biết người ta không gây rối với 'cái bóng' .... Tôi nghĩ rằng tôi là f ** ckd nhưng cảm ơn chúa vì @psusi .... Tôi đã chỉnh sửa menu grub để khôi phục thêm / bin / sh như anh ta nói , đã theo dõi thú cưỡi của anh ấy và chỉ sao chép khăn choàng từ / var / sao lưu trên cái bị hỏng trong / etc ... Tốt như mới .. cảm ơn
rbacksreerob

2

Bạn nên đọc câu trả lời của Eliah Kagan trước khi tiếp tục đọc câu trả lời này. Ông giải thích cách xử lý tình huống và tại sao thường không cần thiết phải thay đổi / etc / passwd bằng tay.

Dù sao đi nữa, nếu bạn thực sự biết những gì bạn đang làm và bạn cần chỉnh sửa /etc/passwdthủ công , bạn có thể làm điều đó, nhưng bạn vẫn không nên đơn giản thay đổi các tệp với trình chỉnh sửa yêu thích của mình. Thay vào đó là công cụ

vipw

Từ trang người đàn ông:

The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.

Ví dụ: nếu bạn muốn thay đổi UID người dùng, theo như tôi biết, để chỉnh sửa các tệp theo cách thủ công, là cách duy nhất. Ngoài ra nếu bạn muốn thay đổi mật khẩu người dùng và sau đó quay lại mật khẩu trước đó mà không biết mật khẩu thì không có cách nào khác usermod. Nhưng nếu bạn lưu mật khẩu băm tạo thành tệp bóng, sau đó thay đổi mật khẩu của người dùng, sau đó bạn có thể thêm mật khẩu băm một lần nữa để chỉnh sửa tệp bóng vipw -s.


1

Sau khi làm theo câu trả lời của @ EliahKagan, tôi không thể đăng nhập lightdmvà tài khoản của tôi không được liệt kê. Tôi phát hiện ra rằng sự cho phép của passwdtập tin không được thiết lập đúng; người dùng lightdm không có quyền truy cập vào nó. Đây là cách tôi sửa nó :.

Đăng nhập vào một tty Ctrl+ Alt+F1

thay đổi /etcthư mục

cd /etc

Sau đó thay đổi quyền thành 644

sudo chmod 644 passwd

Sau đó làm ls -la

chuỗi quyền sẽ trông như thế này

-rw-r--r--

-1

Nếu bạn có thể đăng nhập, chỉ cần mở terminal và thử điều này:

sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd

Khác

Khởi động vào chế độ phục hồi hoặc từ Ubuntu sống Cd. Sau đó, gắn ổ đĩa cũ của bạn:

mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd

sau đó khởi động lại. Điều đó sẽ đặt không passwd cho root.

Sau đó, bạn có thể đăng nhập, tạo lại tất cả các tài khoản của mình, v.v.

Bạn cũng có thể sử dụng sao lưu được gọi là (tôi nghĩ) /etc/passwd-

Chỉnh sửa : (một phương pháp khác tôi chưa từng thử trước đây nhưng tôi nghĩ nó cũng hoạt động)

  • Bắt đầu GRUB khi khởi động (nhấn Esctrong khi khởi động)
  • Nhấn equa (chế độ phục hồi)
  • Nhấn equa dòng bắt đầu với kernel
  • Nhấn Spacevà nhậpinit=/bin/bash
  • nhấn Enter
  • nhấn b
  • Tại dấu nhắc lệnh: cp /etc/passwd- /etc/passwd
  • Khởi động lại GRUB lần nữa
  • Nhấn equa (chế độ phục hồi)
  • Nhấn equa dòng bắt đầu với kernel
  • Nhấn Spacevà nhậpinit=/bin/bash
  • nhấn Enter
  • nhấn b
  • Tại dấu nhắc lệnh mount -o remount,rw /
  • Loại passwd YOURUSERNAMEHERE(Nếu bạn không biết loại tên người dùng của mìnhls /home (đó là chữ thường chữ L và chữ thường chữ S) cho danh sách người dùng)
  • Nhập mật khẩu mới nhanh chóng
  • Khởi động lại để khởi động bình thường.

Nguồn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.