ดำเนินการโดยไม่ตั้งใจ sudo rm / * บนเซิร์ฟเวอร์ระยะไกล


11

ฉันดำเนินการโดยไม่ได้ตั้งใจrm /*ในขณะที่เข้าสู่ระบบในฐานะรูทในเซิร์ฟเวอร์ Ubuntu ระยะไกลและลบไบนารีทั้งหมดและตอนนี้ฉันไม่สามารถเข้าสู่ระบบผ่านทาง ssh หรือ ftp เพื่อกู้คืนไฟล์ (และหวังว่าจะดีที่สุด)

มีวิธีแก้ไขระเบียบนี้หรือฉันควรโทรดาต้าเซ็นเตอร์และขอรูปแบบหรือไม่


2
คุณสามารถยืนยันได้ว่านี่เป็นเซิร์ฟเวอร์จริงหรือเซิร์ฟเวอร์เสมือนจริงหรือไม่? นอกจากนี้ไม่ว่าคุณจะเรียกใช้-rอาร์กิวเมนต์rmหรือเพียงแค่ทำตามคำสั่งที่คุณแสดง ผู้ให้บริการโฮสต์ของคุณมีวิธีใด ๆ ในการเข้าถึงอิมเมจดิสก์นอกเครื่องนั้นหรือไม่?
Caleb

คำตอบ:


26

rm /*ควรลบน้อยมาก ไม่มี-rแฟล็กที่จะลบสิ่งใด ๆ ซ้ำ ๆ และหากไม่มีไดเรกทอรีจะไม่ถูกลบ (และแม้ว่าไดเรกทอรีจะถูกลบจะสามารถลบได้เฉพาะอันที่ว่างเปล่าเท่านั้น) rm -rf /*คำตอบนี้จะบอกกล่าวกับสมมติฐานที่ว่าคุณไม่ได้เรียกใช้

ไฟล์เดียวในระบบไฟล์รูทของผลลัพธ์อาจเป็น/lib64symlink ไปยังเคอร์เนลและ initrd (แม้ว่าในระบบ Ubuntu หนึ่งที่ฉันกำลังดูอยู่พวกเขาไม่มีอยู่) หรือsymlink บนระบบ 64 บิต

ปัญหาอาจเกิดจากการที่/lib64 -> /libsymlink ถูกลบไปแล้ว มันค่อนข้างน่ารังเกียจเหมือนกันทุกโปรแกรมจะพึ่งพา symlink นั้น:

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

นั่นld-linuxคือพลโหลดเดอร์แบบไดนามิกและถ้าไม่พร้อมใช้งานคุณจะไม่สามารถเรียกใช้งานโปรแกรมเรียกทำงานแบบไดนามิกใด ๆ สิ่งนี้จะทำให้เป็นการยากมากในการเข้าสู่ระบบและคุณอาจไม่สามารถเลย

busyboxหนึ่งอาจจะช่วยให้รอด เรียกใช้สิ่งนี้เพื่อตรวจสอบ:

$ ldd /bin/busybox
    not a dynamic executable

ในกรณีนี้ busybox ควรจะทำงานได้ แต่คำถามคือคุณจะใช้งานได้อย่างไร?

หากคุณมีสิทธิ์เข้าถึงพรอมต์บูตโหลดเดอร์คุณอาจจะสามารถบู๊ตได้โดยinit=/bin/static-shที่ static-sh เป็น symlink ไปที่busybox(ตรวจสอบว่า/bin/static-shมีอยู่ - มันทำบนระบบของฉัน แต่ไม่ใช่ Ubuntu มาตรฐาน ข้อผิดพลาดนี้แสดงว่าพร้อมใช้งาน .)

เมื่อคุณมีรูทเชลล์คุณสามารถสร้าง/lib64symlink ใหม่ได้ คุณอาจต้องติดตั้งระบบไฟล์รูทใหม่ก่อนเพื่ออ่าน / เขียน busybox ควรมีเครื่องมือเหล่านี้อยู่ภายในซึ่งคุณสามารถเรียกใช้ดังนี้:

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

หากทุบตีทำงานปัญหาควรได้รับการแก้ไข


18

หากคุณต้องการกู้คืนไฟล์จากการติดตั้งปัจจุบันให้ถามโฮสต์ของคุณเพื่อช่วยคุณ สมมติว่าเป็น VM จะใช้เวลาประมาณห้านาทีต่อวันในการสร้างอิมเมจดิสก์ของคุณติดตั้งโฮสต์ใหม่จากการลบและดัมพ์อิมเมจดิสก์เก่าในระบบไฟล์ใหม่ของคุณ

หากคุณไม่ต้องการอะไรให้นำไปติดตั้งใหม่ ตัวเลือกที่เร็วขึ้นเกือบทุกครั้งเมื่อคุณทำเรื่องยาก


2
เห็นพ้อง หากเป็นบริการโฮสติ้ง VM ที่มีความสามารถพอสมควรพวกเขาควรจะสามารถทำได้ ติดต่อพวกเขาโดยเร็วที่สุดเพื่อให้แน่ใจว่าพวกเขาจะยังมีการสำรองข้อมูลล่วงหน้าไว้ล่วงหน้า
Shadur

2

หากคุณเพิ่งลบ / lib64 symlink ไปที่ / lib และคุณยังคงเปิดคอนโซลอยู่ให้ทำดังนี้

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

และคุณควรจะสามารถเรียกใช้คำสั่งได้ตามปกติอีกครั้ง ปรับเส้นทางไปยังไลบรารี ld จริงของคุณ นอกจากนี้คุณยังสามารถเรียกใช้คำสั่งอื่น ๆ ที่คุณต้องการโดยเพียงแค่ใส่คำสั่งล่วงหน้าด้วยพา ธ ไลบรารี ld แบบเต็ม


1

หากไม่มีการเข้าถึงเซิร์ฟเวอร์จริงคุณก็ไม่สามารถทำอะไรได้มากมาย


ดังนั้นฉันควรถามรูปแบบแล้วหรือมีวิธีการคืนค่าไฟล์เหล่านั้นโดยไม่ต้องตีอย่างอื่นหรือไม่
Ant

คุณลืมว่ามีความเป็นไปได้สูงว่านี่เป็นเซิร์ฟเวอร์เสมือนซึ่งในกรณี "เซิร์ฟเวอร์ทางกายภาพ" ไม่ได้มีความหมายมากนักยกเว้นการเข้าถึงเครื่องมือระยะไกลระดับสูงกว่า
Caleb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.