Nếu bạn vẫn còn một vỏ gốc, bạn có thể có cơ hội sửa chữa hệ thống của mình. Hãy nói rằng bạn đã chuyển tất cả các thư mục chung ( /bin
, /etc
, /lib
, /sbin
, /usr
- đó là những cái mà có thể làm phục hồi khó khăn) dưới /oops
.
Bạn sẽ không thể phát mv
lệnh trực tiếp, ngay cả khi bạn chỉ định đường dẫn đầy đủ /oops/bin/mv
. Đó là bởi vì mv
được liên kết động ; bởi vì bạn đã di chuyển /lib
thư mục, mv
không thể chạy vì nó không thể tìm thấy các thư viện tạo thành một phần của mã. Trên thực tế, nó thậm chí còn tệ hơn thế: mv
không thể tìm thấy trình tải động /lib/ld-linux.so.2
(tên có thể thay đổi tùy theo kiến trúc và biến thể unix của bạn và thư mục có thể là một tên khác như /lib32
hoặc /lib64
). Do đó, cho đến khi bạn chuyển /lib
thư mục trở lại, bạn cần gọi trình liên kết một cách rõ ràng và bạn cần chỉ định đường dẫn đến các thư viện đã di chuyển. Đây là lệnh được thử nghiệm trên Debian bóp i386.
export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /
Bạn có thể cần điều chỉnh điều này một chút cho các bản phân phối hoặc kiến trúc khác. Ví dụ: đối với CentOS trên x86_64:
export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
Khi bạn đã làm hỏng một cái gì đó /lib
, nó sẽ giúp có một hộp công cụ được liên kết tĩnh nằm xung quanh. Một số bản phân phối (tôi không biết về CentOS) cung cấp một bản sao Busybox được liên kết tĩnh . Ngoài ra còn có sash , một shell độc lập với nhiều lệnh được tích hợp. Nếu bạn có một trong những thứ này, bạn có thể phục hồi từ đó. Nếu bạn chưa cài đặt chúng trước khi thực tế thì đã quá muộn.
# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit
Nếu bạn không có shell root nữa, nhưng bạn vẫn có trình nghe SSH và bạn có thể đăng nhập trực tiếp dưới dạng root qua ssh và bạn có một trong các hộp công cụ được liên kết tĩnh này, bạn có thể có thể ssh in. có thể hoạt động nếu bạn đã di chuyển /lib
và /bin
, nhưng không /etc
.
ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /
Một số quản trị viên thiết lập một tài khoản thay thế với một vỏ được liên kết tĩnh hoặc làm cho tài khoản gốc sử dụng một vỏ được liên kết tĩnh, chỉ cho loại rắc rối này.
Nếu bạn không có vỏ gốc và chưa có biện pháp phòng ngừa, bạn sẽ cần phải khởi động từ CD / USB trực tiếp của Linux (mọi thứ sẽ hoạt động miễn là gần đây đủ để có thể truy cập vào đĩa và hệ thống tệp của bạn) và di chuyển các tập tin trở lại.