/ बिन / आदि / lib64 / रूट / sbin हटाए गए या एमवी फ़ोल्डर / * / * द्वारा ले जाया गया जबकि सु


11

ओएस सेंटोस 6.5 64-बिट है

मैंने एक टार फाइल डाउनलोड की और mvइसे अनटार करना चाहा ।

मैंने अनसुना किया, फिर दुर्घटना के रूप में (जड़ के रूप में) बैश के mv folder/* /*बजाय भाग गया mv folder/* .ने कहा कि यह कुछ फाइलों को अधिलेखित नहीं कर सकता है, फिर दूसरों के लिए अनुमति मांगी। मैंने ctrl-c'd किया।

मैंने टर्मिनल सत्र को खुला छोड़ दिया है, लेकिन बाहर निकल गया है su

अब मैंने अधिकांश shellआदेशों तक पहुंच खो दी है , lsकोई निर्देशिका नहीं कर सकता और वापस नहीं ला सकता su

वेबसर्वर और सेवाएं अभी भी चल रही हैं। मैं बहुत कुछ कमांड चलाने कर सकते हैं, cdउनमें से एक है और जब मैं करने की कोशिश cdकरने के लिए /etcया /binइसके साथ त्रुटियों no directory found

संपादित करें बस से लापता सभी फ़ोल्डर देखा /( bin, etc, lib64, root, sbin) के लिए ले जाया गया /varनिर्देशिका, मैंने कोशिश की /var/bin/suऔर मिलती है: -bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory


1
क्या आप /var/bin/suसीधे नहीं चल सकते ?
डार्कहॉग

कृपया समाधान के साथ प्रश्न को संपादित न करें। स्टैक एक्सचेंज नेटवर्क पर आप उत्तर जोड़ते हैं, उत्तर को बेहतर बनाने के लिए मौजूदा उत्तर पर टिप्पणी छोड़ते हैं।
बर्नहार्ड

@Darkhogg /var/bin/su: user root does not existमुझे लगता है कि हमने निर्धारित किया है कि ऐसा नहीं किया जा सकता क्योंकि / etc / var / etc
webaholik

@ बर्नहार्ड ने ठीक करने की कोशिश की
वेबहॉलिक

जवाबों:


23

यदि आपका सिस्टम 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-linuxld-linuxपुस्तकालय एक बाइनरी द्वारा आवश्यक अन्य पुस्तकालयों को लोड करने के लिए जिम्मेदार है। आपके सिस्टम पर यह रहता है /lib64/ld-linux-x86-64.so.2। चूंकि यह निर्देशिका स्थानांतरित हो गई है, इसलिए किसी भी गतिशील रूप से जुड़े निष्पादन योग्य काम नहीं करेगा।

व्यस्त बॉक्स कार्य कारण है कि व्यस्त बॉक्स सांख्यिकीय रूप से जुड़ा हुआ है। यह उपयोग नहीं करता है ld-linux


अच्छा विचार। CentOS में आमतौर पर initramfs के कारण एक व्यस्त बॉक्स स्थापित होता है , जिससे यह अच्छी तरह से काम कर सकता है।
पावेल Paमेरदा

busyboxसही समाधान की तरह लगता है, दुर्भाग्य से स्थापित नहीं, यह तय होने के बाद होगा ... इस बीच, वहाँ वैसे भी आदेशों को निष्पादित /var/lib64/ld-linux-x86-64.so.2करने के लिए सही रास्ता है /lib64/ld-linux-x86-64.so.2? ऐसा प्रतीत होता है कि कमांड क्या मार रहा है/var/bin
webaholik

@ पैट्रिक: क्या आप कृपया वह जानकारी जोड़ सकते हैं जिसका उपयोग करने का इरादा ओपी का आदेश गलत है? मैं तब अपना उत्तर हटा सकता था क्योंकि यह अब (लगभग) बेमानी है। क्या यह स्टैक एक्सचेंज का उपयोग करने का सही तरीका है?
पावेल Paमरदा

1
यह में कई बातें की तलाश में /etcहै जो वहाँ (नहीं कर रहे हैं /etc/passwd, /etc/nsswitch, /etc/pam.d, और शायद अधिक)। के लिए suकाम करने के लिए, /etcयह के मूल स्थान में वापस किया जाना चाहिए। जब तक आपको एक रूट शेल नहीं मिला है, तो मुझे लगता है कि आप फंस गए हैं :-(
पैट्रिक

2
@ user1296209 एक बार जब आप एक लाइव-अप प्राप्त करते हैं, तो बस रूट वॉल्यूम को माउंट करें और उन निर्देशिकाओं को वापस ले जाएं। यह सब आपको फिर से चलाने की आवश्यकता होनी चाहिए।
पैट्रिक

10

mv folder/* ./*साथ ही गलत है। आपके द्वारा चलाए जाने वाले आदेशों के शब्दार्थ के बारे में आपको अधिक सावधान रहना चाहिए। mvदो से अधिक तर्कों वाली कमांड केवल पिछले एक को छोड़कर सभी तर्क लेती है और उन रास्तों को स्थानांतरित करती है जो वे अंतिम तर्क में निर्दिष्ट निर्देशिका में इंगित करते हैं।

फ़ोल्डर से वर्तमान निर्देशिका के लिए सभी निर्देशिकाओं (छिपे हुए को छोड़कर) को स्थानांतरित करने के लिए , आपको उपयोग करना चाहिए:

mv folder/* .

आपने अपना रनिंग सिस्टम तोड़ दिया है। आपके शेल और बिलिन कमांड काम करना जारी रखते हैं। आपको एक लाइव सीडी को बूट करना होगा और निर्देशिकाओं को वापस ले जाना होगा। मुझे फ़ाइलों को स्थानांतरित करने / नाम बदलने के लिए एक बैश बिलिन के बारे में पता नहीं है जो आपको रिबूट किए बिना स्थिति को ठीक करने की अनुमति देगा, अधिक विवरण के लिए पैट्रिक का जवाब देखें।


मुझे एहसास नहीं था कि: मैं / var / bin / / var / etc को cd कर सकता हूं, लगता है कि फ़ोल्डर var में स्थानांतरित हो गए हैं, वैसे भी मैं उन्हें वापस स्थानांतरित कर सकता हूं? ... बिना livecd के?
वेबहॉलिक

मैंने कोशिश की / var / bin / su & get: -bash: / var / bin / su: /lib64/ld-linux-x86-64.so.2: खराब ELF दुभाषिया: ऐसी कोई फ़ाइल या निर्देशिका नहीं
webaholod

अहा ... मैं जवाब ठीक कर दूँगा।
पावेल Paमेरदा

मेरे mvआदेश को फ़ोल्डर से वर्तमान निर्देशिका में सभी फ़ाइलों और फ़ोल्डरों को स्थानांतरित करने के लिए क्या होना चाहिए था ?
वेबहॉलिक

1
@ user1296209: यदि आप एक लाइव सिस्टम बूट करते हैं, तो आप निश्चित रूप से अपने जीवन प्रणाली पर रूट एक्सेस कर सकते हैं। आपका वास्तविक सिस्टम सिर्फ एक माउंटेड विभाजन है जिसका लाइव सिस्टम के लिए कोई विशेष अर्थ नहीं है। एकमात्र जटिलता यह है कि आपकी /और /varनिर्देशिका अलग-अलग विभाजन पर हो सकती हैं, जिस स्थिति में आपको दोनों को माउंट करना होगा।
celtschk

2

मैं गलती से / usr_old / usr चला गया और सब कुछ नरक में चला गया। सौभाग्य से मैं प्रॉम्प्ट में रहा और usr फ़ोल्डर को पुनर्स्थापित करने के लिए निम्न कमांड निष्पादित करने में सक्षम था:

LD_LIBRARY_PATH=/usr_old/lib64 /usr_old/lib64/ld-linux-x86-64.so.2 /usr_old/bin/mv /usr_old /usr

U & L के लिए वेल्कम, क्या आप केवल एक ही कमांड टाइप कर रहे थे? कृपया अधिक विस्तृत प्रक्रिया प्रदान करें। (विशेष रूप से दस mont पुराने प्रश्न के लिए, जल्दी करने की कोई आवश्यकता नहीं है)
आर्चर

1
हां, जब मैंने टाइप किया, तो सब कुछ बहाल हो गया। शायद मुझे यह उल्लेख करना चाहिए कि मैं इस सब के दौरान जड़ था।
मानसेहर

1

महत्वपूर्ण यदि आप यहां हैं, और mvगलत तरीके से भागे हैं, तो shellकमांड नहीं चला सकते हैं , और रूट निर्देशिका ( /) से गायब होने वाले फ़ोल्डर्स , सबसे पहले, यदि आपके पास है SU, तो SUतय समय तक बाहर न निकलें , क्योंकि आप इसे वापस नहीं लेंगे। यदि आप दूरस्थ रूप से जुड़े हुए हैं, यदि आप डिस्कनेक्ट करते हैं, तो आप sshसर्वर को अकेला नहीं छोड़ पाएंगे , नहीं reboot- अधिकांश चलने वाली सेवाओं को ठीक नहीं होना चाहिए। आप पैट्रिक द्वारा सुझाए गए कई समाधानों में से एक का प्रयास कर सकते हैं ... हालाँकि यदि आपको मेरी तरह खराब हो तो आपको शारीरिक पहुँच की आवश्यकता होगी।

एक बार मशीन के सामने, मैंने इसे रिबूट किया। जैसा कि अपेक्षित था, मुझे एक कर्नेल आतंक प्राप्त हुआ।

मैंने सोचा था कि यह एक बहुत ही आसान फिक्स होगा, लाइव एलसीडी डालें, बचाव मोड में प्रवेश करें, यह इस पोस्ट को आसान बनाने के लिए - फिर मुझे अपनी रूट निर्देशिका को माउंट करने की कोशिश करनी होगी। हालाँकि मुझे केवल एक साधारण माउंट कमांड से अधिक की आवश्यकता थी।

ऐसा इसलिए था क्योंकि मैं, कई लोगों की तरह, एक lvm फ़ाइल सिस्टम था, और यह पहली बार था जब मुझे इस तरह से बचाव करना पड़ा। मुझे यह देखने के लिए वेब की खोज करनी थी कि मुझे क्या करना है। मैंने उस जानकारी को इस पोस्ट में समेकित कर दिया है। यहाँ मेरी समस्या को ठीक करने की प्रक्रिया थी।

1) सम्मिलित Centos_6.4_min सीडी

2) GUI इंटरफ़ेस ने पूछा कि मैं क्या करना चाहता था, बचाव को चुना

3) बचाव ने वर्तमान प्रणाली को माउंट करने की कोशिश की, लेकिन संकेत दिया कि मेरे पास कोई लिनक्स विभाजन नहीं था

4) shellविकल्प दिए जाने पर प्रवेश करने की संभावना

इस बिंदु पर, मैंने सिस्टम को माउंट करने के लिए कई चीजों की कोशिश की, बिना किसी भाग्य के, मुझे पूरा यकीन है कि ये सभी कदम हैं जो मुझे (lvm के कारण) लेने थे:

5) मेरे संस्करणों को स्कैन किया गया,

lvmdiskscan

6) Ran lvscan, ने सभी को "निष्क्रिय" के रूप में सूचीबद्ध दिखाया

lvscan

7) लोड डिवाइस मॉड्यूल

modprobe dm-mod

8) उन संस्करणों को बदलें जो सक्रिय हैं

vgchange -ay

9) lvscanफिर से दौड़े , अब "सक्रिय" के रूप में सूचीबद्ध सभी आइटम

10) माउंट किए गए और तार्किक विभाजन को माउंट किया

mkdir /mnt/root

mount /dev/VolGroup00/LogVol00 /mnt/root

11) स्थानांतरित फ़ोल्डर वापस (आपको दूसरों की आवश्यकता हो सकती है):

mv /var/{bin,etc,lib64,mnt,root,sbin} /

12)reboot

13) सफलता!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.