หากคุณยังมีรูทเชลล์คุณอาจมีโอกาสซ่อมแซมระบบของคุณ สมมติว่าคุณย้ายทั้งหมดไดเรกทอรีที่พบบ่อย ( /bin
, /etc
, /lib
, /sbin
, /usr
- เหล่านี้เป็นคนที่จะทำให้การกู้คืนยาก) /oops
ภายใต้
คุณจะไม่สามารถที่จะออกคำสั่งโดยตรงแม้ว่าคุณระบุเส้นทางแบบเต็มmv
/oops/bin/mv
นั่นเป็นเพราะmv
เป็นเชื่อมโยงแบบไดนามิก ; เนื่องจากคุณย้าย/lib
ไดเรกทอรีไปแล้วmv
ไม่สามารถทำงานได้เพราะไม่พบห้องสมุดที่เป็นส่วนหนึ่งของรหัส ในความเป็นจริงมันยิ่งแย่ไปกว่านั้น: mv
ไม่พบตัวโหลดแบบไดนามิก /lib/ld-linux.so.2
(ชื่ออาจแตกต่างกันไปขึ้นอยู่กับสถาปัตยกรรมและตัวแปรยูนิกซ์ของคุณและไดเรกทอรีอาจเป็นชื่ออื่นเช่น/lib32
หรือ/lib64
) ดังนั้นจนกว่าคุณจะย้าย/lib
ไดเรกทอรีกลับมาคุณจะต้องเรียกใช้ตัวเชื่อมโยงอย่างชัดเจนและคุณต้องระบุเส้นทางไปยังไลบรารีที่ย้ายแล้ว นี่คือคำสั่งทดสอบบน Debian squeeze i386
export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /
คุณอาจจำเป็นต้องปรับเปลี่ยนนี้เล็กน้อยสำหรับการกระจายหรือสถาปัตยกรรมอื่น ๆ ตัวอย่างเช่นสำหรับ CentOS ใน x86_64:
export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
เมื่อคุณทำบางสิ่งผิดพลาด/lib
มันจะช่วยให้กล่องเครื่องมือที่เชื่อมโยงอยู่กับที่อยู่นิ่ง ๆ บางกระจาย (ผมไม่ทราบเกี่ยวกับ CentOS) จัดให้มีสำเนาแบบคงที่เชื่อมโยงของBusybox นอกจากนี้ยังมีสายสะพายเปลือกแบบสแตนด์อโลนที่มีหลายคำสั่งในตัว หากคุณมีหนึ่งในนั้นคุณสามารถกู้คืนจากที่นั่น หากคุณยังไม่ได้ติดตั้งก่อนหน้านี้มันก็สายเกินไป
# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit
หากคุณไม่มีรูตเชลล์อีกต่อไป แต่คุณยังมี SSH daemon คอยฟังอยู่และคุณสามารถล็อกอินโดยตรงในฐานะรูทบน ssh และคุณมีกล่องเครื่องมือที่เชื่อมโยงกับสแตติกเหล่านี้คุณอาจจะสามารถ ssh ได้ สามารถทำงานได้หากคุณได้ย้าย/lib
และแต่ไม่/bin
/etc
ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /
ผู้ดูแลระบบบางรายตั้งค่าบัญชีสำรองที่มีเชลล์ที่เชื่อมโยงแบบสแตติกหรือทำให้บัญชีรูทใช้เชลล์ที่ลิงก์แบบสแตติก แต่เพียงผู้เดียวสำหรับปัญหาประเภทนี้
หากคุณไม่มีรูทเชลล์และยังไม่มีข้อควรระวังคุณจะต้องบูตจาก Linux Live CD / USB (สิ่งใดจะทำตราบใดที่มันยังไม่พอที่จะเข้าถึงดิสก์และระบบไฟล์ของคุณ) และ ย้ายไฟล์กลับ