Vô tình thực hiện sudo rm / * trên một máy chủ từ xa


11

Tôi đã vô tình thực thi rm /*trong khi đăng nhập bằng root trong Ubuntu Server từ xa và đã xóa khá nhiều tất cả các tệp nhị phân và hiện tại tôi không thể đăng nhập qua ssh hoặc ftp để khôi phục các tệp (và hy vọng điều tốt nhất).

Có cách nào để khắc phục tình trạng lộn xộn này không, hay tôi nên gọi cho trung tâm dữ liệu và yêu cầu định dạng?


2
Bạn có thể xác nhận xem đây là máy chủ vật lý hay ảo? Ngoài ra, cho dù bạn đã chạy -rđối số đến rmhoặc thực sự vừa thực hiện lệnh bạn hiển thị. Nhà cung cấp dịch vụ lưu trữ của bạn có cung cấp bất kỳ cách nào để truy cập hình ảnh đĩa bên ngoài máy đó không?
Caleb

Câu trả lời:


26

rm /*nên xóa rất ít. Không có -rcờ trong đó sẽ xóa đệ quy bất cứ thứ gì, và nếu không có nó thì các thư mục sẽ không bị xóa (và ngay cả khi các thư mục đã bị xóa, chỉ những cái trống mới có thể bị xóa). Câu trả lời này được xác định dựa trên giả định rằng bạn không chạy rm -rf /*.

Các tệp duy nhất trong hệ thống tệp gốc của hệ quả có thể là các liên kết tượng trưng cho kernel và initrd (mặc dù trên một hệ thống Ubuntu tôi đang xem, chúng không tồn tại) hoặc một /lib64liên kết tượng trưng trên các hệ thống 64 bit.

Vấn đề có thể là /lib64 -> /libliên kết tượng trưng đã bị xóa. Mặc dù điều đó khá khó chịu, vì mọi chương trình sẽ dựa vào liên kết tượng trưng đó:

$ ldd /bin/bash
...
    /lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)

Đó ld-linuxlà trình tải động và nếu không có sẵn, bạn không thể chạy bất kỳ tệp thực thi động nào. Điều này sẽ khiến việc đăng nhập trở nên vô cùng khó khăn và bạn hoàn toàn không thể.

Một vị cứu tinh có thể busybox. Chạy cái này để kiểm tra:

$ ldd /bin/busybox
    not a dynamic executable

Trong trường hợp này, busybox nên chạy được, nhưng câu hỏi là làm thế nào bạn có thể chạy nó?

Nếu bạn có quyền truy cập vào bộ nạp khởi động nhanh chóng, bạn có thể khởi động với init=/bin/static-sh, nơi tĩnh-sh là một liên kết tượng trưng đến busybox(check mà /bin/static-shtồn tại -. Nó hiện trên hệ thống của tôi, nhưng nó không phải là tiêu chuẩn Ubuntu Lỗi này cho thấy là có sẵn .)

Khi bạn có một vỏ gốc, bạn có thể tạo lại /lib64liên kết tượng trưng. Trước tiên, bạn có thể cần phải kết nối lại hệ thống tập tin gốc dưới dạng đọc / ghi. busybox nên tích hợp sẵn các công cụ này, bạn có thể chạy như sau:

# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash# 

Nếu bash hoạt động, vấn đề cần được khắc phục.


18

Nếu bạn cần khôi phục các tập tin từ cài đặt hiện tại, hãy yêu cầu máy chủ của bạn giúp bạn. Giả sử đó là máy ảo, sẽ mất khoảng năm phút mỗi ngày để hình ảnh đĩa của bạn, cài đặt lại máy chủ của bạn từ đầu và kết xuất hình ảnh đĩa cũ trong hệ thống tệp mới của bạn.

Nếu bạn không cần bất cứ điều gì, chỉ cần yêu cầu họ cài đặt lại. Hầu như luôn luôn là lựa chọn nhanh hơn khi bạn xương cứng.


2
Đồng tình. Nếu họ là một dịch vụ lưu trữ VM có thẩm quyền hợp lý, họ sẽ có thể làm điều này. Liên hệ với họ nhanh nhất có thể để đảm bảo họ vẫn sẽ có bản sao lưu trước khi bắt vít.
Shadur

2

Nếu bạn vừa xóa symlink / lib64 thành / lib và bạn vẫn mở giao diện điều khiển, chỉ cần làm:

/lib/ld-linux-x86-64.so.2 /bin/ln -s /lib /lib64

và bạn sẽ có thể chạy các lệnh bình thường trở lại. Điều chỉnh đường dẫn đến thư viện ld thực tế của bạn. Bạn cũng có thể chạy bất kỳ lệnh nào khác mà bạn muốn bằng cách chỉ cần đặt trước nó với đường dẫn thư viện ld đầy đủ.


1

Không có quyền truy cập vào máy chủ vật lý, bạn không thể làm gì nhiều.


Vì vậy, tôi nên yêu cầu một định dạng sau đó, hoặc có cách nào để khôi phục các tệp đó mà không bị đánh cắp mọi thứ khác không?
Kiến

Bạn quên rằng có khả năng cao đây là một máy chủ ảo trong trường hợp "máy chủ vật lý" không có ý nghĩa gì nhiều ngoại trừ việc có quyền truy cập vào các công cụ từ xa cấp cao hơn.
Caleb
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.