यदि आपका सिस्टम busybox
स्थापित हो गया है, तो आप इसका उपयोग चीजों को वापस करने के लिए कर सकते हैं।
busybox
एक बाइनरी है जिसमें बहुत सारी मानक उपयोगिताओं का निर्माण किया गया है। हालात इस तरह के रूप mv
, sh
, ls
, आदि
पावेल के उत्तर पर आपकी टिप्पणी से, ऐसा लगता है कि सब कुछ समाप्त हो गया /var
। आप करने की कोशिश कर सकते हैं /var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
। आपके अधिकांश सिस्टम को फिर से चालू होना चाहिए। कुछ निर्देशिकाएं ऐसी हैं, /tmp
जो भी मौजूद हैं /var/tmp
, इसलिए आप उन्हें स्थानांतरित नहीं कर सकते। उम्मीद है कि वे वही हैं जिनके mv
बारे में शिकायत की गई थी और वे अकेले रह गए थे।
जड़ खोलना
आपने यह भी उल्लेख किया है कि आपने अपना रूट शेल खो दिया है, और यह su
आपको ld-linux
लाइब्रेरी त्रुटि दे रहा है । आप निम्नलिखित का उपयोग करने में सक्षम हो सकते हैं:
LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/su
नोट: यह प्रयास करने पर, यह काम नहीं करता है। इसका कारण यह है है su
में कई फ़ाइलों की आवश्यकता है /etc
( passwd
, pam.d
, और अन्य)। यदि /etc
अभी भी बरकरार थे, तो यह सफल होने का एक अच्छा मौका होगा।
बिजीबॉक्स के बिना
यदि आपके पास व्यस्त बॉक्स उपलब्ध नहीं है, तो आप उसी ld-linux ट्रिक का उपयोग करने में सक्षम हो सकते हैं su
:
LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
एक लाइव सीडी से
जैसा कि टिप्पणियों में चर्चा की गई है, यदि आपने रूट शेल खो दिया है, तो आप बहुत फंस गए हैं। मूल रूप से इसे ठीक करने के लिए आपको रूट विशेषाधिकारों की आवश्यकता होती है। वहां पहुंचने का एकमात्र तरीका यह है कि आपकी अनुमतियों को बढ़ाने su
या sudo
बढ़ाने के लिए एक उपयोगिता हो (दोनों इस बिंदु पर गैर-कार्यात्मक हैं), या पहले से ही रूट के रूप में चल रहे एक अन्य कार्यक्रम को हाईजैक करें (जो चल रहा है, संभव नहीं है) के आधार पर।
यह लाइव सीडी होने का एकमात्र विकल्प है। एक बार एक लाइव सीडी (या लाइव यूएसबी, या जो भी) में बूट किया गया, बस रूट वॉल्यूम को माउंट करें, और प्रभावित निर्देशिकाओं को /var
वापस अपने मूल घर में स्थानांतरित करें /
।
जो हुआ उसका सार
folder/*
इस तरह के रूप में कुछ folder/foo
और करने के लिए विस्तार किया जाएगा folder/bar
।
/*
जैसे कुछ के लिए विस्तार किया जाएगा /bin
/lib32
/lib64
/etc
/home
/root
/var
। यह देखते हुए कि /var
अंतिम वस्तु है।
इसलिए जब शेल ने उन सभी ग्लब्स का विस्तार किया, तो यह कुछ इस तरह से चलता था:
mv folder/foo folder/bar /bin /lib32 /lib64 /etc /home /root /var
जैसा /var
कि सूची में अंतिम आइटम है, इसमें सब कुछ स्थानांतरित हो गया।
क्यों /var/bin/su
त्रुटियों के साथ?/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
लिनक्स में लगभग सभी बायनेरिज़ गतिशील रूप से जुड़े हुए हैं ld-linux
। ld-linux
पुस्तकालय एक बाइनरी द्वारा आवश्यक अन्य पुस्तकालयों को लोड करने के लिए जिम्मेदार है। आपके सिस्टम पर यह रहता है /lib64/ld-linux-x86-64.so.2
। चूंकि यह निर्देशिका स्थानांतरित हो गई है, इसलिए किसी भी गतिशील रूप से जुड़े निष्पादन योग्य काम नहीं करेगा।
व्यस्त बॉक्स कार्य कारण है कि व्यस्त बॉक्स सांख्यिकीय रूप से जुड़ा हुआ है। यह उपयोग नहीं करता है ld-linux
।
/var/bin/su
सीधे नहीं चल सकते ?