फ़ाइल को एक ही वॉल्यूम के भीतर ले जाते समय फ़ाइल अनुमतियां क्यों रखी जाती हैं?


9

कभी-कभी, हमारे पास यह समस्या होती है कि किसी फ़ाइल में उस फ़ोल्डर से भिन्न अनुमतियाँ हैं जहाँ वह है।

अब मुझे पता चला कि इसके पीछे कारण बताने वाला एक KB लेख है :

डिफ़ॉल्ट रूप से, एक ऑब्जेक्ट अपने मूल ऑब्जेक्ट से अनुमति प्राप्त करता है, या तो निर्माण के समय या जब इसे कॉपी किया जाता है या अपने मूल फ़ोल्डर में ले जाया जाता है। इस नियम का एकमात्र अपवाद तब होता है जब आप किसी ऑब्जेक्ट को समान वॉल्यूम पर किसी भिन्न फ़ोल्डर में ले जाते हैं। इस स्थिति में, मूल अनुमतियाँ रखी जाती हैं।

इसलिए उपयोगकर्ता ने फ़ाइल को एक फ़ोल्डर से दूसरे में स्थानांतरित कर दिया और मूल फ़ोल्डर से अनुमतियाँ बनाए रखी गईं।

मेरा सवाल अब यह है: यह अपवाद क्यों मौजूद है? इसके पीछे क्या तर्क है?

जवाबों:


8

मैंने इसे एक ब्लॉग पोस्ट http://think-like-a-computer.com/2011/07/24/moving-files-on-the-same-ntfs-volume-does-inherit-permissions// पर समझाया है। नीचे भी समझाया गया है।

जब कोई फ़ाइल कॉपी की जाती है, तो उसे एक नई फ़ाइल बनानी होती है और उसे अनुमतियों के एक नए सेट को असाइन करना होता है, इसलिए उसे पेरेंट फ़ोल्डर से अनुमतियाँ मिलती हैं जैसा कि आप जानते हैं।

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

जब फ़ाइल को समान वॉल्यूम में ले जाया जाता है, तो वास्तव में कुछ भी नहीं होता है (डिस्क स्तर पर)। यह सिर्फ फ़ाइल के तार्किक पथ स्थान को बदलता है। डिस्क पर वास्तविक डेटा और भौतिक फ़ाइल को छुआ या बदला नहीं गया है। जब आप एक ही ड्राइव पर दूसरे फ़ोल्डर में 5GB फ़ाइल ले जाते हैं, तो यह लगभग तुरंत किया जाता है? ऐसा इसलिए है, क्योंकि यह वास्तव में स्थानांतरित नहीं हुआ है, लेकिन सूचक जहां फ़ाइल तार्किक रूप से मौजूद है, बदल गया है। जैसा कि इसे किसी भी तरह से संशोधित नहीं किया गया था, अनुमतियाँ भी नहीं बदलती हैं।

यही इस व्यवहार का कारण है।

संपादित करें: कुछ मैं उल्लेख करना भूल गया ... एमएस लेख पूरी तरह से सटीक नहीं है। एमएस बोली:

डिफ़ॉल्ट रूप से, एक ऑब्जेक्ट अपने मूल ऑब्जेक्ट से अनुमति प्राप्त करता है, या तो निर्माण के समय या जब इसे कॉपी किया जाता है या अपने मूल फ़ोल्डर में ले जाया जाता है। इस नियम का एकमात्र अपवाद तब होता है जब आप किसी ऑब्जेक्ट को समान वॉल्यूम पर किसी भिन्न फ़ोल्डर में ले जाते हैं। इस स्थिति में, मूल अनुमतियाँ रखी जाती हैं।

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

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

अंतर नोटिस ?? इस बार, एक फ़ाइल को उसी वॉल्यूम में किसी अन्य फ़ोल्डर में ले जाने से वास्तव में परमिट बदल गए हैं, एमएस कुछ कहता है कि यह नहीं करता है। क्या मुझे 2000 लोल के बाद से MS प्रलेखन में एक गलती मिली है ??

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


+1 दोनों अच्छे उत्तर हैं, लेकिन आपका कहना अधिक है। मुझे आपकी टिप्पणी के बारे में पसंद है कि कैसे 5GB फ़ाइल तुरंत चलती है। अच्छा दृश्य।
KCotreau

मुझे लगता है कि "कोई कॉपी नहीं हो रही है" एसीएल को छुआ नहीं जाने का मुख्य कारण है।
वीवीएस

1
कोई भी तकनीकी कारण नहीं है कि फ़ाइल सिस्टम तालिका में परिवर्तन से संबंधित ACL प्रविष्टि प्रभावित नहीं होनी चाहिए। मुझे लगता है कि यह स्पष्टीकरण सही है। लेकिन मुझे लगता है कि यह प्रभाव का वर्णन करता है, वास्तविक कारण नहीं। इसका कारण ACL का अपना सुरक्षा मॉडल है, जो प्रति वॉल्यूम आधारित है। विशेषाधिकार के परिवर्तन के रूप में समझे जा रहे विभिन्न संस्करणों के बीच चालें / प्रतिलिपि कार्यों को विशेषाधिकार अज्ञेय के रूप में एक ही मात्रा के भीतर और परिवर्तन के रूप में समझा जाता है। डिफ़ॉल्ट रूप से, स्वाभाविक रूप से।
एक बौना

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

1
@Mucker: क्षमा करें, लेकिन आपका स्पष्टीकरण केवल स्पष्ट गलत है। विंडोज़ हमेशा एसीएल को फाइलों के साथ संग्रहीत करता है, भले ही वे विरासत में मिले हों। और फ़ाइल-सिस्टम दृष्टिकोण से, वे हमेशा फ़ाइल के साथ चलते हैं यदि फ़ाइल उसी वॉल्यूम के भीतर ले जाया जाता है। कुछ सिस्टम सेटिंग्स के आधार पर, विंडोज एक्सप्लोरर में कूद जाएगा और कदम के बाद अनुमतियों को समायोजित करेगा। लेकिन एक्सप्लोरर और फ़ाइल सिस्टम के साथ कुछ नहीं करना है। और बदतर: यह विंडोज संस्करण पर निर्भर करता है और (जैसा कि मैंने पहले ही उल्लेख किया है) कुछ सिस्टम सेटिंग। देखें blogs.msdn.com/b/oldnewthing/archive/2006/08/24/717181.aspx
पॉल Groke

6

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

यह व्यवहार एसीएल का उपयोग करने वाले अधिकांश (यदि सभी नहीं) ऑपरेटिंग सिस्टम के बीच आम है। यह उपयोगकर्ताओं और अनुप्रयोगों द्वारा समान मात्रा के भीतर सामान्य फ़ाइल सिस्टम संचालन की गारंटी देता है।

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

स्वाभाविक रूप से यह हमेशा वांछनीय नहीं होता है। जिसके कारण चाल और कॉपी संचालन को विशेष अनुमति विरासत नियमों के साथ परिभाषित किया जा सकता है। उसी लेख से:

  • फ़ाइलों और फ़ोल्डरों को कॉपी या स्थानांतरित करने पर अनुमतियों को संरक्षित करने के लिए, Xcopy.exe सुविधा का उपयोग / O या / X स्विच के साथ करें। ऑब्जेक्ट की मूल अनुमतियाँ नए स्थान में अंतर्निहित अनुमतियों में जोड़ी जाएंगी।

  • ऑब्जेक्ट की मूल अनुमतियाँ जोड़ने के लिए जब आप किसी ऑब्जेक्ट को कॉपी या स्थानांतरित करते हैं, तो -O और –X स्विच के साथ Xcopy.exe सुविधा का उपयोग करें।


"यह अवांछनीय है यदि, उदाहरण के लिए, आपने गलती से किसी फ़ाइल को किसी सिस्टम, या विशेष स्वामित्व वाले फ़ोल्डर में या प्रभावी रूप से संरक्षित किया है।" - तो आप फ़ाइल को उदाहरण के लिए अनुमतियों के साथ एक फ़ोल्डर में स्थानांतरित करते हैं और अभी भी फ़ाइल को वापस ले जाने में सक्षम हैं .. यह विभिन्न संस्करणों के लिए वांछनीय क्यों नहीं है?
वीवीएस

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

1

ठीक है, यह वास्तविक न्यूनता है। पहला - क्या हम सिंगल पीसी या सर्वर के बारे में बात कर रहे हैं? मुझे लगता है कि हम एक सर्वर के बारे में बात कर रहे हैं। तो .... कंपनी ए के विंटल एडमिन के रूप में आप अपने नए सर्वर पर नेटवर्क ड्राइव पर एक फाइलसिस्टम बनाते हैं। आप इसे विभागों पर आधारित करते हैं अर्थात प्रत्येक विभाग में एक फ़ोल्डर होता है और गोपनीयता के मुद्दों के कारण प्रत्येक फ़ोल्डर का अपना विशिष्ट ACL होता है, जैसा कि संभवतः मानदंड है - हाँ? इसलिए, यदि आप किसी अन्य विभाग के फ़ोल्डर में फ़ाइल को स्थानांतरित करने जा रहे हैं, तो पृथ्वी पर आप क्यों नहीं चाहेंगे कि वह अपने नए फ़ोल्डर के परमिट को प्राप्त करे? मेरा क्या मतलब है..क्या आपके पास एक अनुमति-आधारित फाइल सिस्टम है यदि आप इसका उपयोग नहीं करने जा रहे हैं? मैं आपको एक वास्तविक जीवन का उदाहरण दे सकता हूं, जहां स्थानांतरित फ़ाइलों / फ़ोल्डरों के लिए यह हमेशा महत्वपूर्ण है कि वे अपने मूल फ़ोल्डर के एसीएल को प्राप्त करें, बस मुझसे पूछें।

वॉल्यूम के भीतर फ़ाइलों को ले जाना या उन्हें वॉल्यूम एक्स से वॉल्यूम वाई तक ले जाना ... क्या आवश्यक अंतर है? आप कुछ फ़ाइलों के स्थान को स्थानांतरित कर रहे हैं - विभिन्न संस्करणों में या जहां तक ​​मैं देख सकता हूं, कॉर्पोरेट वातावरण में लिट्ल अंतर नहीं करता है। वास्तविक कारण क्यों एक में डिफ़ॉल्ट रूप से वंशानुक्रम शामिल है और दूसरा पहले से ही मुकर द्वारा उल्लेख नहीं किया गया है - यह "दक्षता" है। वॉल्यूम के भीतर फ़ाइलों को खींचने और छोड़ने से केवल इंडेक्स प्रविष्टि में बदलाव होता है - फाइलें स्थानांतरित नहीं होती हैं और उनकी एसीएल जानकारी अकेले रह जाती है। एक साधारण ऑपरेशन के लिए बनाता है। जब फ़ाइलों को वॉल्यूम में ले जाया जाता है, हालांकि, फ़ाइलों और उनके एसीएल को फिर से परिभाषित करना पड़ता है, इसलिए इसे ठीक से करना और वंशानुक्रम को शामिल करना अच्छा समझ में आता है क्योंकि यह एक परिहार्य ओवरहेड को जन्म नहीं देता है।

मुझे समझ नहीं आ रहा है कि Microsoft इस समस्या का समाधान क्यों नहीं कर रहा है। क्या एक्सप्लोरर के ड्रैग एन ड्रॉप के हिस्से के रूप में संवाद बॉक्स को शामिल करना बहुत मुश्किल होगा? कुछ ऐसा है "आपने फ़ाइलों को अलग-अलग एक्सेस अधिकारों के साथ एक स्थान पर स्थानांतरित कर दिया है, क्या आप नए मूल फ़ोल्डर की अनुमति प्राप्त करना चाहते हैं? वाई या एन?"

सादर, स्टोनगेंट

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