क्या कोई ऐसा परिदृश्य है जहाँ rm -rf -no-preserve-root की जरूरत है?


27

मैंने यहाँ पर कुछ प्रश्न देखे हैं जहाँ लोग गलती से rm -rf --no-preserve-rootया rm -rf *, अपनी फ़ाइल प्रणाली के अधिकांश या सभी को मिटा सकते हैं इससे पहले कि वे प्रतिक्रिया कर सकें।

क्या कभी उपयोग करने का कोई कारण है --no-preserve-root, चाहे वह सामान्य उपयोग में हो, एक डेवलपर के रूप में या एक प्रशासक के रूप में?


4
मैं किसी भी उपयोगी मामले की कल्पना नहीं कर सकता ... मुझे लगता है कि यह विकल्प सिर्फ UNIX सिद्धांत (बिना अपवाद के समान चीजों को रखने के संदर्भ में) की orthogonality प्राप्त करने के लिए मौजूद है। आप शायद इस मामले में अपवाद चाहते हैं/ , लेकिन "सामान्य मामला" अभी भी दर्शाया गया है। दूसरे शब्दों में: »यह मेरे कंप्यूटर का काम नहीं है कि मुझे बताएं कि मुझे क्या करना है।« और यह नहीं होना चाहिए।
एंड्रियास विसे

यह एक संभव हथियार के रूप में है जब स्काईनेट का उपयोग होता है।
मिच डार्ट

जवाबों:


26

महत्वपूर्ण: आधुनिक यूईएफआई सिस्टम, /sysनिर्देशिका के तहत फर्मवेयर को माउंट करते हैं और इसे ओएस पर उपलब्ध कराते हैं। एक आधुनिक सिस्टम पर इस आदेश को न चलाएं क्योंकि यह इस फर्मवेयर को हटा देगा, अनिवार्य रूप से आपकी मशीन को ईंट कर देगा।


सबसे सरल परिदृश्य जो मैं सोच सकता हूं कि कोई व्यक्ति अपने ड्राइव से सभी डेटा हटाना चाहता है। ऐसा करने के लिए पूरी तरह से वैध कारण हो सकते हैं और सबसे सरल तरीका जो मैं सोच सकता हूं

rm -rf --no-preserve-root /

वास्तव में यह एक उदाहरण के रूप में दिया जाता है info rm:

`--no-preserve-root'
    Do not treat `/' specially when removing recursively.  This option
    is not recommended unless you really want to remove all the files
    on your computer. 

एक और पूरी तरह से अच्छा कारण यह है कि आप एक माउंटेड फ़ाइल सिस्टम को हटाना चाहते हैं जिसे आपने chroot-ed में डाला है। उस स्थिति rm -rf --no-preserve-root /में, chrootवातावरण में सिस्टम को हटा देगा , लेकिन आपके पास बरकरार रहेगा।

मुझे यकीन है कि अधिक संभावित कारण हैं, लेकिन सामान्य तौर पर यह एक बहुत ही उचित दृष्टिकोण लगता है कि मेरा सिस्टम मुझे जो कुछ भी इसके साथ करना चाहता है वह करने की अनुमति देता है। सावधान रहना मेरा काम है, सिस्टम को केवल मुझे वह करने में सक्षम बनाना चाहिए जो मैं चाहता हूं। अगर मैं जो चाहता हूं वह बेवकूफ है, तो यह मेरी समस्या है और ओएस की नहीं।

वैसे भी, यह एक अपेक्षाकृत नया प्रतिबंध है, यह POSIX विनिर्देश के 7 वें संस्करण में जोड़ा गया था ( पिछले एक यहाँ है), इससे पहले कि rm -rf /एक पूरी तरह से मान्य कमांड था। एक ऐतिहासिक नोट पर, .और ..निर्देशिकाओं को हमेशा rm1979 से संरक्षित किया गया है , जब rmपहली बार निर्देशिकाओं को हटाने की क्षमता हासिल की थी। उस पर और अधिक यहाँ


21
यदि आपका सिस्टम UEFI (नया कंप्यूटर) है तो सभी डेटा को उपयोग करने के लिए इस का उपयोग न करें। इसके कारण फर्मवेयर के सभी चर नष्ट हो जाते हैं और मदरबोर्ड एक ईंट की तरह बेकार हो जाता है
Suici Doga

5
@SuiciDoga: स्रोत, या आगे की व्याख्या? मदरबोर्ड फर्मवेयर को एचडीडी पर संग्रहीत नहीं किया जाना चाहिए, अन्यथा यदि आप ड्राइव को चलाते हैं तो वे खो जाएंगे।
तारका

15
@ तारा: / एसआईएस / फर्मवेयर / एफईआई / एफिवर्स / माउंट किया जा सकता है और पुनरावर्ती को हटाने से उन संस्करणों को हटाया जा सकता है। यह वास्तव में एक प्रणाली को ईंट नहीं करना चाहिए, लेकिन हो सकता है। देखें thenextweb.com/insider/2016/02/01/...
श्यानिक

4
@ टार्क वे एचडीडी पर संग्रहीत नहीं हैं और ड्राइव को प्रभावित नहीं करते हैं। हालांकि, जिन कारणों से मुझे अभी तक समझना है, वे माउंट किए गए हैं इसलिए वास्तव में सुलभ हैं /
टेराडन

20
एक ड्राइव को खाली करने का सही तरीका इसके विभाजन को सुधारना है (या इसे पूरी तरह से पुन: प्रस्तुत करना)। सभी फाइलसिस्टम हार्ड डिस्क नहीं हैं, इसलिए उपयोग करने से rm -rf /आप किसी के एनएफएस / सीआईएफएस / एसएसएचएफएस माउंट पर रिमोट मशीन को खाली कर सकते हैं।
स्कोर_उंडर

12

--no-preserve-rootस्विच का अस्तित्व अतिरिक्त कार्यक्षमता जोड़ने के लिए नहीं है, बल्कि कार्यक्षमता में बहुत ही कम कमी को ओवरराइड करने के लिए है। यह स्विच संभवतः दर्शन पर आधारित है कि कंप्यूटर को वही करना चाहिए जो उसे बताया गया है और किसी भी वांछित कार्रवाई को व्यक्त करने के लिए कमांड उपलब्ध होना चाहिए। यह UEFI को प्री-डेट बदलता है, और मेरे अनुभव के आधार पर, मैं कहता हूं कि यह अब अप्रचलित है।

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

rm -rf /${my_directory}
rm -rf / var/log/httpd/*

फन फुटनोट: संरक्षण इसका उद्देश्य नहीं था। एक सन माइक्रोसिस्टम्स ब्लॉग के अनुसार, /निर्देशिका को हटाने से वर्तमान में काम करने वाली निर्देशिका को हटा दिया जाएगा, निर्देशिका .और ..निर्देशिका के लिए पहले से किए गए विशेष विचार का उल्लंघन । यही कारण है कि उनकी मानक समिति ने इस विशेष अपवाद की अनुमति दी - दुर्घटना को रोकने के लिए नहीं। यह परिवर्तन पहली बार सोलारिस 10 बिल्ड 36 के साथ पेश किया गया था।

http://archive.is/5lmc9


लिंक के लिए धन्यवाद! उम्मीद कर रहा था कि ऐतिहासिक tid बिट का हवाला दिया जाएगा क्योंकि मैं सोच रहा था कि बदलाव का कारण क्या था।
कैमरून गगनोन

दिलचस्प अतिरिक्त जानकारी - धन्यवाद
मार्क 12

1

शायद यह एक उत्तर नहीं है जो मूल पूछनेवाला चाहता है, लेकिन एक उपयोग मामला है जिसे रूट निर्देशिका से पुनरावृत्ति से सभी फ़ाइलों को हटाने की आवश्यकता है। यद्यपि यह rmकमांड के माध्यम से नहीं है , यह आपके (गैर-एम्बेडेड) लिनक्स सिस्टम के बूटिंग के दौरान switch_root (8) प्रक्रिया का हिस्सा है।

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