मैं rm -rf के साथ एक निर्देशिका ट्री नहीं निकाल सकता


9

यह मुझे बहुत अजीब लगता है। मैं कर्नेल 2.6.37.2 चला रहा हूं और भागा हूं:

~]$ cp -r /proc/ here
~]$ rm -rf here

उम्मीद के मुताबिक नकल करते समय मुझे कुछ अनुमति से वंचित कर दिया गया और मैंने अंततः कंट्रोल-सी मारा। Permission deniedनई निर्देशिका और फ़ाइलों को हटाने की कोशिश करते समय मुझे बहुत सारी फाइलें मिलती हैं ।

एक नोट के रूप में, मुझे यह अजीब व्यवहार मिला क्योंकि एक दोस्त ने मुझे .tgzउसकी /procडायर के स्नैपशॉट के लिए भेजा था । मैंने निर्देशिका निकाली और जब मैं इसके माध्यम से देख रहा था तो मुझे वही समस्या थी।

rm -rf जैसे रूट काम करता है।

lsattr ई विशेषता दिखाता है (जो कि मेरी सभी फाइलों / निर्देशिकाओं को दिखाता है)।


मैंने आपके प्रश्न का शीर्षक थोड़ा सामान्य कर दिया है क्योंकि मुख्य मुद्दा नहीं है /proc। वैसे, इस समय के लिए थोड़ा देर हो गई है, लेकिन यदि आप प्रश्न पोस्ट करने के बाद जवाब का पता लगाते हैं, तो इसका जवाब खुद देना ठीक है , और इसे अन्य लोगों के लिए छोड़ दें जो एक समान समस्या में भाग सकते हैं।
गिल्स एसओ- बुराई को रोकना '

जवाबों:


16

यदि कोई गैर-रिक्त निर्देशिका है जहाँ आपके पास लिखित अनुमति नहीं है, तो आप इसकी सामग्री नहीं निकाल सकते।

$ mkdir foo
$ touch foo/bar
$ chmod a-w foo
$ rm -rf foo
rm: cannot remove `foo/bar': Permission denied

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

निर्देशिका ट्री को हटाने योग्य बनाने के लिए, सभी निर्देशिकाओं को उसमें लिखने योग्य बनाएं (नियमित फ़ाइलों की अनुमति से कोई फर्क नहीं पड़ता है जब इसे हटाने की बात आती है rm -f)। आप इनमें से किसी भी कमांड का उपयोग कर सकते हैं:

chmod -R u+w here        # slow if you have a lot of regular files
find here -type d -exec chmod u+w {} +

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