यदि आपके पास अभी भी एक रूट शेल है, तो आपके पास अपने सिस्टम को सुधारने का मौका हो सकता है। मान लीजिए कि आप सभी आम निर्देशिका चले गए हैं ( /bin, /etc, /lib, /sbin, /usr- इन लोगों को है कि वसूली के लिए मुश्किल बना सकता है कर रहे हैं) के तहत /oops।
mvयदि आप पूर्ण पथ निर्दिष्ट करते हैं, तो आप सीधे कमांड जारी नहीं कर पाएंगे /oops/bin/mv। ऐसा इसलिए mvहै क्योंकि गतिशील रूप से जुड़ा हुआ है ; क्योंकि आपने /libनिर्देशिका को स्थानांतरित कर दिया है , mvइसलिए नहीं चल सकता क्योंकि यह उन पुस्तकालयों को नहीं खोज सकता जो इसके कोड का हिस्सा हैं। वास्तव में, यह उससे भी बदतर है: mvनहीं मिल रहा है गतिशील लोडर /lib/ld-linux.so.2 (नाम अपने वास्तुकला और यूनिक्स संस्करण के अनुसार भिन्न हो सकते हैं, और निर्देशिका के रूप में एक अलग नाम हो सकता है /lib32या /lib64)। इसलिए, जब तक आप /libनिर्देशिका को वापस नहीं ले जाते, तब तक आपको लिंकर को स्पष्ट रूप से लागू करने की आवश्यकता होती है, और आपको स्थानांतरित पुस्तकालयों के लिए पथ निर्दिष्ट करने की आवश्यकता होती है। यहाँ डेबियन निचोड़ i386 पर परीक्षण किया गया आदेश है।
export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /
आपको अन्य वितरण या आर्किटेक्चर के लिए इसे थोड़ा समायोजित करने की आवश्यकता हो सकती है। उदाहरण के लिए, x86_64 पर CentOS के लिए:
export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
जब आप किसी चीज़ को खराब कर देते हैं /lib, तो यह एक सांख्यिकीय रूप से जुड़े टूलबॉक्स के चारों ओर लेटने में मदद करता है। कुछ वितरण (मैं CentOS के बारे में पता नहीं है) की एक स्थिर से जुड़े प्रति उपलब्ध बिजीबॉक्स । इसमें सैश भी है , एक स्टैंडअलोन शेल जिसमें कई कमांड बिल्ट-इन हैं। यदि आपके पास इनमें से एक है, तो आप अपनी वसूली वहां से कर सकते हैं। यदि आपने उन्हें इस तथ्य से पहले स्थापित नहीं किया है, तो बहुत देर हो चुकी है।
# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit
यदि आपके पास अब कोई रूट शेल नहीं है, लेकिन आपके पास अभी भी SSH डेमॉन सुनने की सुविधा है और आप सीधे 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/* /
कुछ प्रशासक वैधानिक रूप से जुड़े शेल के साथ एक वैकल्पिक खाता स्थापित करते हैं, या इस तरह की परेशानी के लिए रूट खाते को एक सांख्यिकीय रूप से जुड़े शेल का उपयोग करते हैं।
यदि आपके पास रूट शेल नहीं है और सावधानी नहीं बरती गई है, तो आपको लिनक्स लाइव सीडी / यूएसबी से बूट करने की आवश्यकता होगी (जब तक यह हाल ही में आपके डिस्क और फाइल सिस्टम तक पहुंचने में सक्षम होने के लिए पर्याप्त है) और फ़ाइलों को वापस ले जाएं।