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 mvperintah secara langsung, bahkan jika Anda menentukan path lengkap /oops/bin/mv. Itu karena mvadalah terkait secara dinamis ; karena Anda telah memindahkan /libdirektori, mvtidak dapat berjalan karena tidak dapat menemukan perpustakaan yang merupakan bagian dari kodenya. Bahkan, ini lebih buruk dari itu: mvtidak 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 /lib32atau /lib64). Oleh karena itu, sampai Anda telah memindahkan /libdirektori 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 /libdan /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.