'Rm -rf /' सिस्टम की सभी फाइलों को हटाने में कैसे सक्षम है?


81

मैंने उबंटू पर इस आदेश की कोशिश नहीं की है (स्पष्ट कारणों के लिए) इसलिए मुझे यकीन नहीं है कि उबंटू इसके निष्पादन की अनुमति देगा। लेकिन यह सब कुछ हटाने के लिए प्रसिद्ध है। जिज्ञासा से बाहर, क्या होता है जब कर्नेल और /binहटाए जाते हैं? rmरन टाइम स्टैक कैसे बनाए रखता है? rmफाइल सिस्टम और पूर्ण विलोपन के साथ संचार करने का प्रबंधन कैसे करता है ? यह हार्डवेयर के साथ कैसे संवाद करता है?


18
rm -rf /बिना कुछ हटाये नहीं --no-preserve-root
मुरु

47
लिनक्स के साथ मेरा पहला अनुभव उबंटू vm बना रहा था ताकि मैं इसे "rm -rf /" कर सकूं। मैं आपको यह कोशिश करने की सलाह देता हूं। यह सेटअप करने के लिए बहुत तेज है, यह आपके मेजबान को सुरक्षित रखता है और आपकी आंखों के सामने ओएस के टुकड़े टुकड़े करने के विभिन्न हिस्सों को देखने के लिए बहुत मनोरंजक है। बहुत संतोषजनक है।
डीजेएमकेमहेम

21
मेरी पसंदीदा समझी गई बग रिपोर्ट की याद दिलाता है: Bugzilla.redhat.com/show_bug.cgi?id=1202858 "अपेक्षित परिणाम: विद्रूप को पुनः आरंभ किया जाता है। वास्तविक परिणाम: सभी फाइलें मशीन पर हटा दी जाती हैं।"

9
आपको यूनिक्स रिकवरी लेजेंड पढ़ना चाहिए । जब तक आप अभी भी एक शेल में लॉग इन हैं, सिस्टम पूरी तरह से मृत नहीं है!
200_सेक्शुअल

जवाबों:


79

इससे कोई फर्क नहीं पड़ता कि /bin/rmहटा दिया गया है। यह केवल एक बार चलाया जा रहा है और उस बिंदु से यह सब मेमोरी में लोड हो गया है, जैसा कि फाइलसिस्टम और डिस्क को डिलीट करते रहने के लिए आवश्यक सब कुछ है।


साइडबार / अपडेट: प्रति डेविड होएल्ज़र के जवाब (और टिप्पणियों में उल्लेख किया गया है), इनोड /bin/rmको इंगित करने के लिए उपयोग किए जाने वाले हार्डलिंक को rmसमाप्त होने तक सही रखा जाएगा (क्योंकि लिनक्स एक खुली स्थिति में है) लेकिन यह तथ्य अप्रासंगिक है; डिस्क की स्थिति बिल्कुल भी मायने नहीं रखती है।

चलने से पहले बाइनरी को मेमोरी में लोड किया जाता है। यहां तक ​​कि अगर आप मैन्युअल रूप से rmडिस्क डेटा को नष्ट कर सकते हैं , तो यह हटाने को पूरा करने से प्रभावित या बंद नहीं करेगा (यह मानते हुए कि आप अन्यथा डिस्क अनुपलब्ध नहीं हैं)।

कोई विचार नहीं है कि इनोड या हार्डलिंक क्या हैं? यह वह जवाब है जहां मैंने इसे काम किया है।


वैसे भी, यह भी है कि आप कंप्यूटर को बिना कोड किए वर्तमान कर्नेल के लिए पैकेज को हटा सकते हैं । जब तक आप एक अलग संस्करण स्थापित करते हैं, यह बूट करने में सक्षम होगा।

फिर से, यह काम करता है क्योंकि rmकेवल एक बार कहा जाता है। निम्नलिखित हैं के बाद असफल /bin/rmमृत्यु हो गई है क्योंकि यह यह हर फ़ाइल नाम के लिए एक बार कॉल:

find / -exec rm {} \;

उस ने कहा, find / -exec rm -rf {} +और find / -print0 | xargs -0 rm -rfदोनों की संभावना विफल हो जाएगी क्योंकि उनके पास तर्क सीमाएं हैं, जिसका अर्थ है कि वे फिर से कॉल किए जाने से पहले केवल कई फ़ाइलों को हटा देंगे। यात्रा के साथ कुछ बिंदु पर, शेष फ़ाइलों को हटाए जाने से पहले /bin/rmसमाप्त हो सकता है ( और जारी किया जा सकता है)। हालांकि इसकी गारंटी नहीं है। यदि /bin/अंतिम निर्देशिका दर्ज की गई थी, तो ये विधियां काम कर सकती हैं।


7
जैसा कि @DavidHoelzer बताते हैं, अनलिंक की गई फ़ाइलों को काम करते रहने के लिए पहले से ही मेमोरी की आवश्यकता नहीं होती है। कर्नेल को पता है कि एक ओपन फ़ाइल हैंडल है, इसलिए यह किसी भी अनुरोध (पेज-इन्स सहित) को अंतिम हैंडल बंद होने तक संतुष्ट करने के लिए फ़ाइल डेटा को चारों ओर रखता है।
एंड्रयू मेडिको 23

4
@Desty, नहीं, वह सफल नहीं होगा, जब तक कि /bin/rmलगभग अंतिम बैच में होने के लिए पर्याप्त नहीं है; -exec ... {} +(बैकस्लैश बचना अनावश्यक है) अभी भी कई निष्पादन में परिणाम है; प्रति फ़ाइल एक नहीं, बल्कि ARG_MAX में फिट होने वाले तर्कों की संख्या के आधार पर प्रति बैच एक हो सकता है।
चार्ल्स डफी

6
@ ओली, यह पेजिंग के बारे में नहीं है; संदर्भ काउंटर इनोड से जुड़े होते हैं, डायरेक्टरी प्रविष्टि से नहीं, और एक ओपन फाइल हैंडल एक संदर्भ के रूप में गिना जाता है (एक हार्ड लिंक के रूप में), इनोड को अस्वीकृत होने से रोकता है। फ़ाइल का आकार बिल्कुल भी एक कारक नहीं है, और यह तब भी होता है जब कोई स्वैप स्थान (इस प्रकार, कोई पेजिंग) बिल्कुल भी नहीं होता है।
चार्ल्स डफी

2
@CharlesDuffy चाहे आपके पास स्वैप स्पेस हो या न हो, पेजिंग का इस्तेमाल सभी मेमोरी मैप्ड फाइल्स के लिए किया जाएगा। जिसमें सभी निष्पादक और पुस्तकालय शामिल हैं। वास्तव में स्वैप स्पेस की कमी का मतलब वास्तव में मेमोरी मैप्ड फाइलों के लिए अधिक पेजिंग हो सकता है।
कास्परड

2
@CharlesDuffy हाँ, आकार वास्तव में अप्रासंगिक है। किसी फ़ाइल की मेमोरी मैप करने से फ़ाइल की कोई भी सामग्री तब तक लोड नहीं हो पाती है जब तक कि वह एक्सेस न हो जाए। और फ़ाइल के एक्सेस किए गए हिस्सों को लोड करने के लिए उपयोग की जाने वाली मेमोरी को ज़रूरत पड़ने पर फिर से मुक्त किया जा सकता है, जिसके बाद इसे फिर से एक्सेस किए जाने पर फ़ाइल से लोड किया जाएगा। तो फ़ाइल को वास्तव में फ़ाइल सिस्टम पर तब तक रहना होता है जब तक वह मैप किया जाता है, और यह एक पेज फ़ाइल के लिए उसी तरह व्यवहार करता है जैसे कि वह एक फाइल के लिए पर्याप्त होता है जो पूरे एड्रेस स्पेस को पूरा करने के लिए पर्याप्त होता है। (विवरण कॉपी-ऑन-राइट मैपिंग के लिए थोड़ा अधिक जटिल हैं जो गतिशील लिंकिंग के लिए आवश्यक हैं।)
कैस्पर

57

मैंने उबंटू पर इस आदेश की कोशिश नहीं की है (स्पष्ट कारणों के लिए) इसलिए मुझे यकीन नहीं है कि उबंटू इसके निष्पादन की अनुमति देगा।

मैंने किया। rm -rf / --no-preserve-rootसीधे मशीन पर खोले गए एक रूट सत्र में चल रहा था, जबकि मैं sshरूट मशीन का उपयोग करके किसी अन्य मशीन से भी जुड़ा हुआ था ।

क्या होता है कि आपको बहुत सारे संदेश मिलने लगते हैं जैसे:

rm: '/ ...' को नहीं हटा सकता: ऑपरेशन की अनुमति नहीं है

या:

rm: '/ ...' को नहीं निकाल सकता: उपकरण या संसाधन व्यस्त

यहाँ छवि विवरण दर्ज करें

हैरानी की बात sshहै कि ऑपरेशन के अंत तक कनेक्शन खोला गया। यह केवल तभी है जब मैंने कनेक्शन बंद कर दिया और इसे फिर से खोलने की कोशिश की कि एक त्रुटि दिखाई दी:

सॉकेट से पढ़ें विफल: सहकर्मी द्वारा कनेक्शन रीसेट

मशीन पर, चार निर्देशिकाएं रहती हैं:

  • /dev। यह वह जगह है जहाँ डिवाइस फ़ाइलों को संग्रहीत किया जाता है।
  • /proc-इन-मेमोरी फाइलसिस्टम कर्नेल द्वारा बनाया गया।
  • /run, डेमॉन के लिए एक मानकीकृत फ़ाइल सिस्टम स्थान।
  • /sys। यह आपको सिस्टम और इसके घटकों के बारे में जानकारी प्राप्त करने की अनुमति देता है।

इसका मतलब है कि वहाँ बहुत कुछ नहीं बचा है, और वहाँ करने के लिए बहुत कुछ नहीं है। आप नहीं कर सकते ls(हालांकि उपयोग करते समय Tab, निर्देशिका और फ़ाइलों के नाम अभी भी प्रदर्शित हैं)। आप cdअलग-अलग निर्देशिकाओं में, और echoसामान भी कर सकते हैं , लेकिन कमांड जैसे कि catअब उपलब्ध नहीं हैं।

कोई sudoभी नहीं है ।

shutdown -h nowऔर rebootसाथ ही गायब हो गया, इसलिए आपका एकमात्र विकल्प मशीन को मैन्युअल रूप से चालू करना प्रतीत होता है। लॉगआउट ( exit) काम नहीं करता है, भले ही यह एक अच्छा "लॉगआउट" पाठ दिखाता हो।

एक बार जब आप मशीन को रिबूट करने की कोशिश करते हैं, तो आपको एक अच्छा GRUB त्रुटि 15 के साथ प्रस्तुत किया जाता है, और फिर, कुछ भी नहीं होता है, जिस बिंदु पर आप यह सोचना शुरू कर सकते हैं कि rmआपके सिस्टम में कुछ खराब हो सकता है।

यहाँ छवि विवरण दर्ज करें

तुम से भी हो सकता है

नहीं, रुको, इसे अपनी मशीन पर मत करो!

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

एक बार तैनाती समाप्त होने के बाद, आपके पास एक ऐसा वातावरण होता है जिसके साथ आप खेल सकते हैं। यदि आप इसे नष्ट कर देते हैं, तो इससे कोई फर्क नहीं पड़ता: आप मशीन को फिर से तैनात करते हैं, और दो मिनट बाद आप जारी रख सकते हैं।

यदि आप VMWare जैसे सॉफ़्टवेयर का उपयोग करते हैं, तो आपको स्नैपशॉट में भी रुचि हो सकती है (ध्यान दें कि मुफ्त VMWare प्लेयर में यह सुविधा है; आपको VMware वर्कस्टेशन खरीदना होगा)। ध्यान दें कि हाइपर-वी मुफ़्त है और स्नैपशॉट का समर्थन करता है (लेकिन आपको विंडोज चलाना होगा)।

स्नैपशॉट का लाभ यह है कि आप मिलिसेकंड के एक मामले में एक ले सकते हैं। स्नैपशॉट पर वापस लौटने में अधिक समय लगता है, लेकिन अक्सर कुछ सेकंड का मामला होता है। यह प्रयोग को और भी आसान और तेज़ बनाता है।

यह प्रयोग केवल ऑपरेटिंग सिस्टम तक ही सीमित नहीं है। आप सॉफ्टवेयर से जुड़ी सभी तरह की चीजें कर सकते हैं। एक संदिग्ध आवेदन मिला? वीएम में इसका परीक्षण करें - यदि यह वायरस है, तो यह कोई नुकसान नहीं करेगा। एक डेटाबेस पर एक ऑपरेशन का परीक्षण करना चाहते हैं, यह देखते हुए कि यह पर्यावरण को प्रभावित कर सकता है? इसे वीएम में टेस्ट करें।

क्या होगा अगर आपने एक वास्तविक, गैर-परीक्षण मशीन पर ऐसा किया हो?

बुरी बातें होती हैं। ध्यान दें कि rmआपको खुद से बचाता है: rm -rf /काम नहीं करेगा: आपको उपयोग करने की आवश्यकता है --no-preserve-root। फिर भी, क्या होगा अगर आप वास्तव में, गलती से, सब कुछ हटाने के लिए हासिल किया है?

rmकेवल फ़ाइलें अनलिंक करता है , लेकिन डेटा अभी भी आपकी हार्ड डिस्क पर मौजूद है। यह बाद में इसे पुनर्प्राप्त करना संभव बनाता है (यही कारण है कि आपको संवेदनशील डेटा के साथ अपनी हार्ड डिस्क को केवल तब नहीं फेंकना चाहिए जब वे किसी भी लंबे समय तक काम नहीं कर रहे हों)।

इसका मतलब यह है कि आपके पास वास्तव में लगभग सभी फ़ाइलों को पुनर्प्राप्त करने के लिए एक हार्ड ड्राइव संलग्नक के साथ एक अतिरिक्त पीसी होना चाहिए । महत्वपूर्ण बात यह है कि पुनर्प्राप्त करने के लिए हार्ड डिस्क पर कुछ भी लिखने से बचें: आपके द्वारा लिखा गया डेटा अनलिंक की गई फ़ाइलों को अधिलेखित कर देगा।

जैसा कि 200_success की टिप्पणी में लेख द्वारा दिया गया है , यदि आप स्मार्ट कार्य करते हैं, तो आप मशीन को एक अतिरिक्त पीसी के बिना भी वापस पा सकते हैं। यदि आप केवल डेटा के बारे में परवाह करते हैं, तो मैं परेशान नहीं करूंगा - एक अतिरिक्त पीसी के साथ इसे पुनर्प्राप्त करना बहुत आसान है।


VirtualBox डिस्क स्नैपशॉट का समर्थन करता है।
नाथन उस्मान

1
ध्यान दें कि वायरस अक्सर VMs का पता लगाने के लिए डिज़ाइन किए जाते हैं, इसलिए मैं इस वायरस का पता लगाने की प्रक्रिया की सलाह नहीं दूंगा। एक छोटा सा सवाल: वे चार शेष निर्देशिका "असली" निर्देशिका नहीं हैं, है ना? वे वास्तव में हार्ड ड्राइव पर नहीं हैं? इस कमांड को चलाने के बाद हार्ड ड्राइव पर क्या रहता है?
raptortech97

2
@ raptortech97 rmवास्तव में हार्ड ड्राइव से सामान को मिटाता नहीं है, यह फाइलसिस्टम ट्री से डिस्क पर वास्तविक डेटा को "अनलिंक करता है" ( डिसाइड करता है), इसे मुफ्त में चिह्नित करता है (ताकि यह सामान्य रूप से सामान्य उपयोग के माध्यम से ओवरराइट हो जाए)। इसलिए, यदि आप कहते हैं, rm -rf ~नहीं, सब खो गया है, जब तक आप जल्दी से कार्य करते हैं (जैसे कि extundelete)। आप इसे अपने मेलबॉक्स में "हटाए गए" फ़ोल्डर के और भी अविश्वसनीय संस्करण के रूप में सोच सकते हैं, यदि आप बहुत लंबा इंतजार नहीं करते हैं, तो आप सामान वापस पा सकते हैं, लेकिन अंततः इसे शुद्ध किया जाएगा।
थॉमस

@ raptortech97 दूसरी ओर, अगर किसी कारण से आपने उपयोग नहीं किया है , rmलेकिन shredयह बहुत ज्यादा गेम है, हालांकि आपके पास अपनी गलती का एहसास करने का समय होगा और श्रेडिंग को अधिक समय लगने के बाद गर्भपात करना होगा।
थॉमस

5
जिन निर्देशिकाओं को रखा जा रहा है, वे किसी न किसी रूप में सबसे अधिक माउंट बिंदु हैं। और जो कमांड काम करना जारी रखते हैं वे बिलिन कमांड को बैश करते हैं, अलग-अलग बायनेरिज़ को नहीं। इसलिए जब lsचले गए तो for i in /*; do echo $i; doneकाम करना चाहिए। और बदलने के लिए catआप जैसे कमांड का उपयोग कर सकते हैं while read i; do echo $i; done < /proc/self/maps
एमवीजी

25

कारण यह है कि फ़ाइल नामकरण परत (आप जो देखते हैं ls) वास्तव में आपकी सुविधा के लिए है। फ़ाइल सिस्टम ड्राइवर और कर्नेल केवल इनोड की देखभाल करते हैं। जब एक फ़ाइल को नाम से संदर्भित किया जाता है, तो इसे तुरंत इनोड में अनुवादित किया जाता है जिसमें सभी मेटाडेटा होते हैं जिसमें अनुमति, डिस्क पर डेटा ब्लॉक, मालिक आईडी, समूह आईडी और लिंक की गिनती शामिल है।

लिंक की गिनती वही है जो वास्तव में यहाँ मायने रखती है। जब आप किसी फ़ाइल को UNIX सिस्टम पर हटाते हैं, तो वास्तविक सिस्टम कॉल a unlink। हुड के नीचे क्या हो रहा है कि लिंक गणना (फ़ाइल नाम परत में फ़ाइल के नाम की संख्या) उस इनोड को इंगित करते हुए अस्वीकृत हो जाती है। फ़ाइल सिस्टम जानता है कि लिंक गिनती शून्य तक पहुंचने पर एक फ़ाइल हटा दी जाती है।

जब कोई फ़ाइल हटा दी जाती है rmतो वह निर्देशिका फ़ाइल को भी संपादित कर देगी (हाँ, यह सिर्फ एक फ़ाइल है जिसमें फ़ाइल नाम और कुछ अन्य बिट्स के अलावा इनकोड शामिल हैं जो इस उत्तर के लिए महत्वपूर्ण नहीं हैं)। हालाँकि, यह अनलिंकिंग है जो वास्तव में डिस्क संसाधनों को मुक्त करता है।

यह कुछ अन्य दिलचस्प प्रभावों की ओर जाता है। सबसे पहले, एक फ़ाइल खोलना संभव है जिसकी लिंक गणना शून्य है। ऐसा तब होता है जब rm -rf /प्रवेश के लिए प्रविष्टि हटा दी जाती है /bin/rm। फ़ाइल खुली है (इसमें फ़ाइल हैंडल है) लेकिन इनोड को हटा दिया गया है (लिंक गणना = 0)। जब तक फ़ाइल हैंडल बंद नहीं हो जाता तब तक डिस्क संसाधनों को जारी नहीं किया जाएगा और पुन: उपयोग नहीं किया जाएगा।

एक और दिलचस्प प्रभाव तब होता है जब आपके पास एक लिंक के साथ एक इनोड होता है जो शून्य से अधिक होता है लेकिन फ़ाइल नामकरण परत में कुछ भी नहीं होता है जो इसे इंगित करता है। यह एक अर्थ में, एक बहुत अच्छी तरह से छिपी हुई फ़ाइल है :)। इसे एक्सेस करने के लिए आपको नाम के बजाय इनकोड संख्या के संदर्भ में कुछ निम्न स्तर का उपयोग करना होगा (क्योंकि एक नहीं है) या एक हेक्स संपादक का उपयोग करके इनोड पर इंगित करने के लिए एक निर्देशिका प्रविष्टि को संपादित करें।

एक तीसरा दिलचस्प प्रभाव यह है कि यदि आप लिंक की संख्या को शून्य पर कम कर देते हैं, लेकिन किसी भी तरह इनोड पर एक निर्देशिका प्रविष्टि को इंगित करते हैं। यदि आप चाहें तो प्रयोग करने के लिए मैं आपको छोड़ दूँगा। स्पष्ट रूप से, हालांकि, ये दोनों अंतिम फ़ाइल सिस्टम को असंगत स्थिति में ले जाते हैं।


दूसरे तरीके से देखते हुए, लिंक की संख्या शून्य नहीं है, क्योंकि फ़ाइल खोलने से / proc के भीतर एक लिंक जुड़ जाता है।
ऑरेंजडॉग

@ ऑरेंजडॉग, यह व्यवहार अभी भी मौजूद है, भले ही procfs अनमाउंट हो।
चार्ल्स डफी

1
@ ऑरेंजडॉग चार्ल्स डफी सही है। फ़ाइल में / हैंडल संभालता है , लिंक गिनती को समायोजित करते हुए, इनोड्स को संशोधित नहीं करते हैं
डेविड होल्ज़र

/ proc और sys वर्तमान प्रणाली (कर्नेल) स्थिति के प्रतिबिंब हैं। केवल फ़ाइलों और निर्देशिकाओं के लिए क्रिया का चयन करें, वास्तव में सिस्टम स्थिति को बदलते हैं।
बजे एक CVn

18

पिछले उत्तर अच्छे हैं, लेकिन मैं एक विवरण स्पष्ट करना चाहता हूं:

rmसिर्फ एक आदेश नहीं है। यह एक ऐसा कार्यक्रम है जो इसमें पाया जाता है PATH

इसलिए जब आप निष्पादित करते हैं तो क्या होता है:

  • आप कहते हैं (रूट के रूप में) rm -rf /
  • उदाहरण के कार्यक्रम rmको तर्कों के साथ स्मृति में लोड किया जाता है -rfऔर/
  • इन तर्कों के आधार पर कार्यक्रम rmअपने कार्यों को शुरू करता है (घुड़सवार / विभाजन में सब कुछ के माध्यम से जा रहा है और इसके संदर्भों को पुन: हटा रहा है [तकनीकीता के लिए खेद है;]))
  • एक बार जब यह समाप्त हो जाता है, तो rmकार्यक्रम का उदाहरण अनलोड किया जाता है
  • इस बिंदु पर स्मृति में केवल वही चीजें हैं जो पहले वहां लोड की गई थीं (उदाहरण के लिए यदि आपके पास उबंटू, डेस्कटॉप वातावरण, कर्नेल, ड्राइवर आदि में टर्मिनल खुला है)
  • यदि आप किसी अन्य कमांड को कॉल करने का प्रयास करते हैं (जो कि लिनक्स के मामले में इसे एक स्टैंडअलोन प्रोग्राम बनाता है), तो यह विफल हो जाएगा क्योंकि PATH स्थानों में ऐसा कोई प्रोग्राम नहीं मिला है (और PATH स्थानों का अब कोई अस्तित्व नहीं है)। हालाँकि एक बार लोड होने के बाद भी सब कुछ चलेगा

सिर्फ यह समझने के लिए कि यह कैसे काम करता है LUB को ubuntu (वर्चुअलबॉक्स में), कुछ स्क्रिप्ट और PHP opcode कैश पर स्थापित करने का प्रयास करें, फिर इस दुष्ट कमांड को कॉल करें। हैरानी की बात है (यदि आप पर्याप्त भाग्यशाली हैं और आपका opcode कैश php फ़ाइल को हटाने की सूचना नहीं देगा) तो आप अभी भी Apache webserver के माध्यम से बाहर से php स्क्रिप्ट तक पहुँच सकते हैं!

पुनश्च: इस दुष्ट कमांड को रूट वॉन्ट डिलीट के रूप में भी चलाया जाता है everything, यह कुछ कर्नेल विशेषाधिकार प्राप्त प्रक्रियाओं /procको नहीं हटा सकता है और /devआपके सिस्टम पर दिखाई देने वाले उपकरणों से कुछ सामान को फ़ाइलों के रूप में नहीं हटा सकता है । वास्तव में, रूट उतना सर्वशक्तिमान नहीं है जितना हम सोचते हैं, दूसरी तरफ कर्नेल है।

PPS: इसके अलावा एक दूसरे विचार के रूप में, आपके पास अभी भी फ़ाइलें होंगी lockedजो विलोपन प्रयास के समय एक अन्य प्रक्रिया द्वारा थीं ।


लिनक्स पर आप रूट के रूप में चलने पर डिवाइस नोड्स को हटा सकते हैं। लेकिन हां, आप कुछ भी नहीं हटा सकते /procक्योंकि यह केवल पढ़ने के लिए फाइल सिस्टम है। इसी तरह के लिए /sys। मेरा मानना ​​है कि आप माउंट पॉइंट भी नहीं हटा सकते।
ब्रायन

@AlexKey मैं "गैर-कर्नेल एम्बेडेड कमांड" (या उस वाक्यांश को पूरी तरह से टालने के लिए) से स्पष्ट करने के लिए संपादन का सुझाव देता हूं। ऐसा लगता है कि आप कह रहे हैं कि ऐसे कमांड हैं जो आप एक शेल के माध्यम से चला सकते हैं जो सीधे कर्नेल में लागू होते हैं इसलिए वे हमेशा काम करते हैं चाहे कोई भी हो। (जो है, जैसा कि आप जानते हैं, लेकिन बहुत से पाठक शायद नहीं जानते, ऐसा नहीं है: जब आप एक कमांड चलाते हैं cd, तो यह शेल बेसिन को इस नाम से पुकारता है - यह कमांड शेल में बनाया गया है, कर्नेल नहीं।) मतलब Alt + SysRq "कमांड"?
एलिया कगन

@ ब्रायन यह डिस्ट्रो पर निर्भर करता है? मैंने डिस्ट्रोस की विविधता में काम किया और जितना अजीब लगता है यह गलती कई बार हुई। जैसा कि मैंने याद किया कि अवशेषों के निरीक्षण के बाद / वहाँ अभी भी / देव में कुछ था, लेकिन यह सीडीआरएम या फ्लॉपी जैसी चीजें हो सकती हैं ...
एलेक्सी कमेन्सकी

@ एलियाकगन जैसा कि मैंने डिस्ट्रो को स्वतंत्र रहने की कोशिश की, इसलिए मैंने इस शब्द का इस्तेमाल किया। इसका मतलब है कि सभी सिस्टमों पर नहीं cli कमांड का मतलब है बाहरी प्रोग्राम। लेकिन धन्यवाद, उस ओर इशारा करने के लिए, मैं बात को स्पष्ट करूंगा।
एलेक्सी कामेन्सकी

@AlexKey मेरा मानना ​​है कि आप /dev/ptsइसे हटाने में सक्षम नहीं होंगे क्योंकि यह एक आरोह बिंदु है। (और एक रीड-ओनली फाइल सिस्टम, भी।)
ब्रायन

1

एक बार जब सब कुछ हार्डड्राइव से मिटा दिया जाता है, तो कर्नेल अभी भी काम कर रहा है, लेकिन बिना किसी उपकरण और प्रोग्राम, कमांड आदि के फंसे हुए हैं।

OS अब काम नहीं करेगा।

और यह सच है कि ओली क्या कहते हैं, कमांड को मेमोरी में लोड / निष्पादित किया जाता है और जब तक आप इस प्रक्रिया को नहीं मारते हैं, तब तक कुछ भी नहीं रुकेगा (बेशक, अगर कमांड अभी भी मौजूद है ^ ^)।


4
कर्नेल क्यों अटक जाएगा? मेनमा द्वारा उत्तर अन्यथा सुझाव देता है, और जो मैंने उम्मीद की थी, उसका समर्थन करता है।
एमवीजी

4
प्रोग्राम मेमोरी से चलते हैं, हार्ड ड्राइव से नहीं। कर्नेल को कुछ भी नहीं पता होगा कि एक रिबूट तक गलत है।
फेयरफॉक्स

अच्छी तरह से शायद मुझे अपने द्वारा उपयोग किए जाने वाले शब्दों को बदलने की आवश्यकता है, डिवाइस, प्रोग्राम आदि के बिना कर्नेल अधिक या कम "अटक गया" है, और यदि आप रूट कंसोल के सामने नहीं हैं, तो आप खराब सामान नहीं कर सकते, उस पर भी बिल्ली। कंसोल आप बुरा सामान नहीं कर सकते। लेकिन मैं अपने उत्तर में अपने शब्दों को बदल दूंगा क्योंकि यह भ्रामक है, मैं सहमत हूं।
s1mmel

0

कृपया ध्यान रखें कि यदि सिस्टम में सेलिनक्स है और सेलिनक्स लागू करने की विधि में है, और सेलिनक्स की नीतियों को ठीक से स्थापित किया गया है; तब बहुत कुछ नहीं होगा।

सेलिनक्स अनिवार्य पहुंच नियंत्रण है, जिसका अर्थ है, कई बातों के बीच, कि रूट उपयोगकर्ता के पास सिस्टम पर किसी भी अन्य उपयोगकर्ता की तुलना में सिस्टम को नष्ट करने की अधिक शक्ति नहीं है।

सेलिनक्स को कर्नेल में लागू किया गया है; इसके चारों ओर जाने के लिए आपको कर्नेल से समझौता करना होगा।

अच्छी सेलिनक्स नीतियों के साथ एक अच्छी तरह से डिजाइन की गई प्रणाली पर, रूट सिस्टम पर बहुत कुछ करने में सक्षम नहीं होगा।

एंड्रॉइड के बाद के संशोधनों में सेलिनक्स को सिर्फ इसी कारण से लागू किया गया है।

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