Jika Anda masih memiliki shell root, Anda mungkin memiliki kesempatan untuk memperbaiki sistem Anda. Mari kita mengatakan bahwa Anda pindah semua direktori umum ( /bin
, /etc
, /lib
, /sbin
, /usr
- ini adalah orang-orang yang bisa membuat pemulihan sulit) di bawah /oops
.
Anda tidak akan dapat mengeluarkan mv
perintah secara langsung, bahkan jika Anda menentukan path lengkap /oops/bin/mv
. Itu karena mv
adalah terkait secara dinamis ; karena Anda telah memindahkan /lib
direktori, mv
tidak dapat berjalan karena tidak dapat menemukan perpustakaan yang merupakan bagian dari kodenya. Bahkan, ini lebih buruk dari itu: mv
tidak dapat menemukan loader dinamis /lib/ld-linux.so.2
(nama dapat bervariasi tergantung pada arsitektur Anda dan varian unix, dan direktori bisa nama yang berbeda seperti /lib32
atau /lib64
). Oleh karena itu, sampai Anda telah memindahkan /lib
direktori kembali, Anda perlu memanggil linker secara eksplisit, dan Anda perlu menentukan path ke perpustakaan yang dipindahkan. Inilah perintah yang diuji pada Debian squeeze i386.
export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /
Anda mungkin perlu menyesuaikan ini sedikit untuk distribusi atau arsitektur lain. Misalnya, untuk CentOS pada x86_64:
export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
Ketika Anda telah mengacaukan sesuatu /lib
, ada baiknya memiliki kotak alat yang terhubung secara statis di sekitar Anda. Beberapa distribusi (saya tidak tahu tentang CentOS) menyediakan salinan Busybox yang terhubung secara statis . Ada juga selempang , shell mandiri dengan banyak perintah bawaan. Jika Anda memiliki salah satunya, Anda dapat melakukan pemulihan dari sana. Jika Anda belum menginstalnya sebelum fakta, sudah terlambat.
# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit
Jika Anda tidak memiliki shell root lagi, tetapi Anda masih memiliki daemon SSH yang mendengarkan dan Anda dapat masuk secara langsung sebagai root over ssh, dan Anda memiliki salah satu dari kotak alat yang terhubung secara statis ini, Anda mungkin dapat melakukan ssh. Ini dapat bekerja jika Anda telah pindah /lib
dan /bin
, tetapi tidak /etc
.
ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /
Beberapa administrator membuat akun alternatif dengan shell yang terhubung secara statis, atau membuat akun root menggunakan shell yang terhubung secara statis, hanya untuk masalah seperti ini.
Jika Anda tidak memiliki shell root dan belum melakukan tindakan pencegahan, Anda harus mem-boot dari Linux live CD / USB (semua itu akan dilakukan selama masih cukup baru untuk dapat mengakses disk dan sistem file Anda) dan pindahkan file kembali.