मैं उस फ़ाइल को नहीं हटा सकता जिसे मैंने एक समूह सदस्य के रूप में लिखने की अनुमति दी है


12
$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password: 
$ groups
user2 user1
$ rm testfile 
rm: cannot remove `testfile': Permission denied

क्या चीज़ छूट रही है?

जवाबों:


22

किसी फ़ाइल को हटाने का मतलब है कि आप उस निर्देशिका में परिवर्तन कर रहे हैं जो फ़ाइल में नहीं है। किसी फ़ाइल को निकालने में सक्षम होने के लिए आपके समूह को निर्देशिका पर rw की आवश्यकता होती है। किसी फ़ाइल पर अनुमतियाँ केवल फ़ाइल में परिवर्तन करने के लिए होती हैं।

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


मैं 775 drwxrwxr-xनिर्देशिका के लिए मिलता है ।
tshepang

1
निर्देशिका का समूह स्वामित्व क्या है? याद रखें, आपके द्वारा उल्लिखित दूसरा 7 निर्देशिका के समूह की अनुमति है, न कि आपके उपयोगकर्ता के समूह का।
jsbillings

1
ls -ld /path/to/directoryया बस ls -ld .अगर आप पहले से ही उस निर्देशिका में cd'd हैं।
jsbillings

1
जो भी कारण के लिए, स्टेट ग्रुप आईडी 1002 नहीं देख सकता है। स्टेट ग्रुप आईडी को / etc / group, NIS, LDAP, आदि में देखता है, और यह एक त्रुटि हो रही है, इसीलिए आप UNKNOWN देख रहे हैं। मैं getent group 1002यह देखने की कोशिश करूंगा कि क्या यह आपको अधिक क्रिया त्रुटि देता है।
20

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

0

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

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