Chown (1) POSIX कल्पना पर स्पष्टीकरण


18

वाक्य रचना (पूर्व में ) (जोर मेरा) के बारे में अपने तर्क अनुभाग मेंchown उपयोगिता का उल्लेख करने के लिए POSIX कल्पना :chown user:groupchown user.group

मालिक और समूह दोनों को निर्दिष्ट करने का 4.3 BSD तरीका POSIX.1-2008 की इस मात्रा में शामिल किया गया था क्योंकि:

  • ऐसे मामले हैं जहां वांछित अंत की स्थिति को chgrp और chown का उपयोग करके हासिल नहीं किया जा सकता है (जो केवल उपयोगकर्ता आईडी बदल गया है) उपयोगिताओं। (यदि वर्तमान स्वामी वांछित समूह का सदस्य नहीं है और वांछित स्वामी वर्तमान समूह का सदस्य नहीं है, तो chown () फ़ंक्शन विफल हो सकता है जब तक कि स्वामी और समूह दोनों एक ही समय में परिवर्तित न हों।)

मुझे लगा कि user:groupवाक्यविन्यास एक सुविधा की बात है। अब उपर्युक्त का अर्थ है chown user:groupकि आप ऐसी चीजें कर सकते हैं जिनके साथ आप नहीं कर सकतेchgrp group; chown user

अब वह पाठ मेरे लिए मायने नहीं रखता। 4.3BSD में, केवल स्वामी ही किसी फ़ाइल को बदल सकता है इसलिए किसी भी स्थिति में वह क्या कर सकता है में कोई प्रतिबंध नहीं है।

SysV और कुछ अन्य सिस्टम किसी फ़ाइल के उपयोगकर्ता और समूह को किसी भी चीज़ में बदलने के लिए फ़ाइल के स्वामी को अनुमति देते हैं (या उपयोग करने की अनुमति देते हैं), लेकिन उन सिस्टम में भी, ऊपर का पाठ मेरे लिए कोई मतलब नहीं रखता है। ठीक है, अगर कोई करता है, तो कोई बाद में chown someone-else the-fileनहीं कर सकता chgrp something-else the-fileक्योंकि कोई अब फ़ाइल का मालिक नहीं है, लेकिन उसे chgrpपहले (फ़ाइल के मालिक रहने) और chownउसके बाद उसे रोकने से कुछ नहीं होता है , और यही वह नहीं है ऊपर पाठ बिल्कुल कह रहा है।

मुझे समझ में नहीं आ रहा है कि क्या और वांछित मालिक मौजूदा समूह का सदस्य नहीं है , समस्या से क्या लेना-देना है।

तो ऐसी कौन सी स्थितियाँ हैं जिनके लिए chown () फ़ंक्शन विफल हो सकता है जब तक कि स्वामी और समूह दोनों को एक ही समय में , और किस सिस्टम पर नहीं बदला जाता है?


1
@ नियम, उन नियमों को किस प्रणाली पर लागू करेंगे? जिन प्रणालियों को मैं जानता हूं, उन पर या तो आप जड़ हैं और आप जो चाहें या जो आपके उपयोगकर्ता 1 नहीं हैं और आप कुछ भी नहीं कर सकते हैं। यदि आप उपयोगकर्ता 1 हैं, तो सिस्टम पर निर्भर करता है, या तो आप किसी भी तरह से स्वामी को बदल नहीं सकते हैं, या, जब आप कर सकते हैं, तब आप समूह को बदल सकते हैं जो आपको पसंद है, और फिर उपयोगकर्ता को जो भी आप पसंद करते हैं।
स्टीफन चेज़लस

यदि मेरे पास एक निर्देशिका है जो मेरे पास है, किसी और के स्वामित्व वाली फ़ाइल है, और जिस समूह का मैं सदस्य नहीं हूं, लेकिन मैं अन्य अनुमतियों के कारण पढ़ सकता हूं। फिर मेरे लिए यह संभव है कि वह मुझे स्वामी बनाने के लिए उसकी नकल करे, और उसका एक नया समूह हो (जिसके लिए मैं सदस्य हूं)। इसलिए यह होना चाहिए ओएस के लिए के रूप में बचाने के लिए मुझे गैर-रूट के रूप में अनुमति देने के लिए chown me:my-group fileअगर फ़ाइल एक स्थान पर है जहाँ मैं पढ़ने / लिखने का उपयोग (कोई चिपचिपा नहीं है)। मैं पहले मालिक के रूप में नहीं चुग सकता था। मैं पहले इस तरह से चॉइस नहीं कर सकता था क्योंकि इससे फाइल बन सकती थी जो मैं नहीं बना सकता: मुझे उस समूह के साथ एक फाइल रखने की आवश्यकता है जिसका मैं सदस्य नहीं हूं।
ctrl-alt-delor 12

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

मुझे यह पाठ मिला, यह भी बताता है कि मैं गलत क्यों हूं (यह उतना सुरक्षित नहीं है): “यदि आपको फ़ाइल को उपयुक्त करने की अनुमति दी गई थी, तो यह एक सुरक्षा छेद होगा। उदाहरण के लिए, उपयोगकर्ता कोई भी फ़ाइल खोल सकता है, तो उसके स्वामित्व और अनुमतियों (खुली फ़ाइल हैंडल पर fstat को कॉल करके) को सत्यापित करें, और यह निष्कर्ष निकाले कि केवल कोई प्रोग्राम जो किसी ने इस डेटा का उत्पादन किया हो सकता है। - यदि आप फ़ाइल उचित करने में सक्षम थे, तो आप किसी की इच्छा के खिलाफ अपनी सामग्री को बदल सकता है "। Unix.stackexchange.com/questions/68439/...
Ctrl-Alt-delor

जवाबों:


5

माइक्रोसॉफ्ट Interix यूनिक्स सबसिस्टम (अब सेवानिवृत्त) अपनी NT कर्नेल के लिए उपयोगकर्ता और समूह की अनुमतियों के साथ थोड़ा अलग तरीके से निपटा की तुलना में कुछ अन्य लोगों के कार्य करें:

उपयोगकर्ता और समूह की जानकारी सुरक्षा एक्सेस डेटाबेस में संग्रहीत है । उपयोगकर्ताओं और समूहों दोनों को एक ही डेटाबेस में संग्रहीत किया जाता है, लेकिन समूह और उपयोगकर्ता नाम अद्वितीय होने चाहिए; किसी समूह के पास उपयोगकर्ता का नाम नहीं हो सकता है और इसके विपरीत। (यह डेटाबेस UNIX में फाइलों /etc/passwdऔर /etc/groupsफाइलों को बदल देता है ।) उपयोगकर्ता और समूह उपयुक्त विंडोज पद्धति (उपयोगकर्ता प्रबंधक, सक्रिय निर्देशिका उपयोगकर्ता और कंप्यूटर, या स्थानीय उपयोगकर्ता और समूह) या Win32 net userकमांड के साथ बनाया जाता है । (उपयोगकर्ताओं को बनाने और निकालने के लिए उदाहरण शेल स्क्रिप्ट्स को निर्देशिका में शामिल किया गया है /usr/examples/admin।) उपयोगकर्ता कई समूहों से संबंधित हो सकते हैं।

यहाँ कुछ और विशिष्ट मैनुअल अंश दिए गए हैं:

विंडोज में, एक उपयोगकर्ता या एक समूह किसी भी वस्तु का मालिक हो सकता है। यह UNIX से अलग है, जिसमें केवल एक उपयोगकर्ता एक वस्तु का मालिक है।

Windows सुरक्षा पहचानकर्ता (SID) का उपयोग करके आंतरिक रूप से सभी उपयोगकर्ताओं और समूहों की पहचान करता है । एक हैशिंग एल्गोरिथ्म SID मान उत्पन्न करता है जो अद्वितीय हैं; कोई भी दो उपयोगकर्ता या समूह एक ही SID नहीं होंगे।

उपयोगकर्ता और समूह जिनके पास किसी ऑब्जेक्ट तक पहुंचने की अनुमति है, उन्हें उनके SID द्वारा पहचाना जाता है। विंडोज़ द्वारा सुरक्षित की जा सकने वाली सभी वस्तुओं में एक विवेकाधीन अभिगम नियंत्रण सूची (DACL) होती है, जिसमें अलग-अलग प्रविष्टियाँ होती हैं जिन्हें अभिगम नियंत्रण प्रविष्टियाँ (ACEs) कहा जाता है। एक ऐस में दो महत्वपूर्ण जानकारी शामिल होती है: एक उपयोगकर्ता या समूह SID, और एक व्यक्ति को किसी वस्तु या समूह तक कितनी पहुंच होती है, इसका विवरण।

chgrp

... फ़ाइल के लिए समूह आईडी बदलें ... chgrp (1) का उपयोग करने वाला उपयोगकर्ता निर्दिष्ट समूह से संबंधित होना चाहिए और फ़ाइल का स्वामी होना चाहिए, या उसके पास उपयुक्त विशेषाधिकार होने चाहिए।

chown

... स्वामी और समूह ऑपरेंड दोनों वैकल्पिक हैं; हालाँकि, एक निर्दिष्ट किया जाना चाहिए। यदि समूह ऑपरेंड निर्दिष्ट किया गया है, तो यह एक बृहदान्त्र (:) से पहले होना चाहिए।

मालिक को एक संख्यात्मक उपयोगकर्ता आईडी या एक उपयोगकर्ता नाम द्वारा निर्दिष्ट किया जा सकता है। यदि कोई उपयोगकर्ता नाम भी एक संख्यात्मक उपयोगकर्ता आईडी है, तो ऑपरेंड का उपयोग उपयोगकर्ता नाम के रूप में किया जाता है। समूह या तो एक संख्यात्मक समूह आईडी या समूह नाम हो सकता है। यदि एक समूह का नाम भी एक संख्यात्मक समूह आईडी है, तो ऑपरेंड को समूह नाम के रूप में उपयोग किया जाता है।

सुरक्षा कारणों से, किसी फ़ाइल का स्वामित्व केवल उचित विशेषाधिकारों के साथ एक प्रक्रिया द्वारा बदला जा सकता है।

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

यहाँ एक विस्तृत रूप से देखने के लिए लिंक दिया गया है कि कैसे इंटरिक्स विंडोज एसीएल के साथ बातचीत करता है कि इस तरह का ज्ञान अन्य यूनिक्स वेरिएंट पर सांबा फाइल-सिस्टम पर कैसे लागू हो सकता है।

यहाँ एक कड़ी है एक अब अप्रचलित ट्यूनेबल का वर्णन सोलारिस दस्तावेज़ rstchownजो ...

इंगित करता है कि क्या chown(2)सिस्टम कॉल के लिए POSIX शब्दार्थ प्रभाव में हैं ...

जाहिर है, अगर पैरामीटर मान के लिए सेट है 0...

... POSIX शब्दार्थ को बंद करने से विभिन्न सुरक्षा छिद्रों की क्षमता खुलती है। यह एक उपयोगकर्ता द्वारा किसी अन्य उपयोगकर्ता के लिए फ़ाइल के स्वामित्व को बदलने की संभावना को भी खोलता है और उपयोगकर्ता या सिस्टम व्यवस्थापक के हस्तक्षेप के बिना फ़ाइल को वापस प्राप्त करने में असमर्थ है

इस तरह का एक विकल्प सोलारिस के पॉसिक्स अनुरूपता को अमान्य नहीं करता है । बस यह एक विकल्प है कि सभी इसे योग्य मानते हैं :

हालाँकि POSIX.1-2008 के अनुरूप सभी कार्यान्वयन नीचे वर्णित सभी विशेषताओं का समर्थन करते हैं, सिस्टम-निर्भर या फ़ाइल सिस्टम-निर्भर कॉन्फ़िगरेशन प्रक्रिया हो सकती है जो इनमें से किसी भी या सभी सुविधाओं को हटा या संशोधित कर सकती है। यदि सख्त अनुपालन की आवश्यकता है, तो ऐसे कॉन्फ़िगरेशन नहीं किए जाने चाहिए।

निम्नलिखित प्रतीकात्मक स्थिरांक को -1 के अलावा किसी अन्य मान से परिभाषित किया जाएगा। एक निरंतर मूल्य शून्य के साथ परिभाषित किया गया है, तो अनुप्रयोगों का उपयोग करना चाहिए sysconf(), pathconf()या fpathconf()काम करता है, या getconfउपयोगिता, निर्धारित करने के लिए जो सुविधाओं उस समय या प्रश्न में विशेष पथ नाम के लिए प्रणाली पर मौजूद हैं।

_POSIX_CHOWN_RESTRICTED

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

chown()प्रणाली के कार्य - जो प्रलेखित प्रणाली कॉल दोनों द्वारा बनाई गई है chownऔर chgrpखोल उपयोगिताओं - है विफल निर्दिष्ट कई कारणों से। उनमें से:

EACCES पथ उपसर्ग के एक घटक पर खोज अनुमति से इनकार किया जाता है।

ELOOP पथ तर्क के समाधान के दौरान प्रतीकात्मक लिंक में एक लूप मौजूद है।

EPERM प्रभावी उपयोगकर्ता आईडी फ़ाइल के स्वामी से मेल नहीं खाती है, या कॉलिंग प्रक्रिया में उपयुक्त विशेषाधिकार नहीं हैं और _POSIX_CHOWN_RESTRICTED इंगित करता है कि ऐसे विशेषाधिकार की आवश्यकता है।

गैर-रूट उपयोगकर्ताओं को अनुमति संशोधन अधिकार देने का व्यवहार सोलारिस के लिए कभी भी अनूठा नहीं रहा है। नहीं है बहुत उत्कृष्ट - अगर कुछ हद तक दिनांक - में यूनिक्स फाइल अनुमति के कवरेज इस मंच पोस्ट जिसमें लेखक कहता है:

मूल रूप से, यूनिक्स ने एक फ़ाइल के मालिक को एक फ़ाइल देने की अनुमति दी। एक फ़ाइल का स्वामी किसी और को स्वामी बदल सकता है। एक गैर-रूट उपयोगकर्ता के लिए इस ऑपरेशन को पूर्ववत करने का कोई तरीका नहीं था ... बीएसडी [बाद में]chown गैर-रूट उपयोगकर्ताओं से हटा दिया गया ... [भाग में] क्योंकि ... इसने डिस्क कोटा लागू किया जो कि डिस्क स्थान को कितना सीमित कर सकता है उपयोगकर्ता एक फ़ाइल सिस्टम में हो सकता है ... शरारती उपयोगकर्ता कोटा को पीछे हटाने के लिए बड़ी फ़ाइलों को दे सकते हैं।

आज, यह कहना आसान नहीं है कि क्या कोई गैर-रूट chownफ़ाइल कर सकता है। यूनिक्स के कई संस्करण दोनों व्यवहारों की अनुमति देते हैं ...

एक और अच्छा - और अधिक हाल ही में - मेलिंग-सूची पोस्ट इस उद्धरण और जारी है:

अधिकांश OS के साथ डिफ़ॉल्ट chownकेवल रूट करने के लिए प्रतिबंधित किया जाना है। और एक आम सहमति है कि इसे सुरक्षा विचारों के लिए इस तरह रहना चाहिए। यदि कोई गैर-रूट उपयोगकर्ता किसी फ़ाइल के स्वामी को बदलता है और कोई भी निष्पादित बिट चालू है, SUIDऔर SGIDबिट्स को साफ़ करना होगा। ऐसा हो भी सकता है और नहीं भी root

मुझे लगता है कि अंतिम पैराग्राफ इसे अच्छी तरह से कहता है।

वह लेख CAP_CHOWNलिनक्स पर उस सुविधा को नियंत्रित करने के लिए भी संदर्भित करता है (जो केवल POSIX_CHOWN_RESTRICTEDव्यवहार को प्रभावित करना चाहिए ) । वहाँ भी CAP_FOWNERक्षमता है, कि व्यवहार में थोड़ा अलग है।

और जैसा कि आप 2003 में बताते हैं :

ध्यान दें कि कम से कम एचपीयूएक्स पर, आप अपनी फ़ाइलों के स्वामी ( rootउदाहरण के लिए) को बदल सकते हैं, भले ही आप एक निजीकृत उपयोगकर्ता न हों ...

... जो एक कॉन्फ़िगरेशन setprivgroupपैरामीटर पर निर्भर करता था ।

किसी भी मामले में, जिसमें एक गैर-रूट उपयोगकर्ता फ़ाइल-अनुमतियों में हेरफेर कर सकता है, यह अनुमान योग्य है, जैसा कि आपके प्रश्न में उद्धृत तर्क में उल्लेख किया गया है , कि एक उपयोगकर्ता chownएक फ़ाइल हो सकता है, जो उपयोगकर्ता के पास ऐसा हो कि वह किसी अन्य उपयोगकर्ता के स्वामित्व में हो। यदि फ़ाइल का समूह स्वामित्व और chownउपयोगकर्ता के समूह संरेखित नहीं करते हैं, तो उपयोगकर्ता अब उस फ़ाइल को संशोधित करने में सक्षम नहीं होगा।

इस परिदृश्य में chown तब chgrp विफल हो जाएगा क्योंकि उपयोगकर्ता के पास अब उस फ़ाइल की अनुमतियों को बदलने की अनुमति नहीं होगी, जबकि chown user:group- तब तक जब तक समूह उपयोगकर्ता के बीच होता है - सफल होगा।

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

फ़ाइल अनुमति, ट्री ट्रैवर्सल और प्रतीकात्मक लिंक के विभिन्न संभावित प्रभावों पर व्यापक प्रलेखन भी है जो यहां के अनुप्रयोगों के संबंध में एक समान विफलता को -Rप्रभावित कर chownसकते हैं:

POSIX XRAT से तीसरे और चौथे डोमेन के शीर्ष भाग :

आम तौर पर, उपयोगकर्ता एक एकल, भौतिक पदानुक्रम, और इसलिए प्रतीकात्मक लिंक, जो पदानुक्रम के बाहर फ़ाइलों का संदर्भ दे सकते हैं, को संचालित करने की इच्छा के लिए फ़ाइल पदानुक्रम ट्रैवर्सल के विकल्प को अनदेखा कर दिया जाता है। उदाहरण के लिए, chown ओनर फाइल एक ही कमांड से -R विकल्प के साथ एक अलग ऑपरेशन है। इस उदाहरण में, कमांड chown owner fileका व्यवहार यहां वर्णित है, जबकि कमांड chown -Rमालिक फ़ाइल का व्यवहार तीसरे और चौथे डोमेन में वर्णित है।

... लॉजिकल वॉक करने के साथ सुरक्षा समस्या है। ऐतिहासिक रूप से, आदेश chown -Rउपयोगकर्ता फ़ाइल सुपर उपयोगकर्ता के लिए सुरक्षित कर दिया गया है क्योंकि है setuid और setgid बिट्स जब फ़ाइल का स्वामित्व बदल गया था खो गए थे। यदि चलना तर्कसंगत था, तो स्वामित्व बदलना अब सुरक्षित नहीं होगा क्योंकि उपयोगकर्ता ने पेड़ में किसी भी फ़ाइल की ओर इशारा करते हुए एक प्रतीकात्मक लिंक डाला होगा। फिर, यह प्रतीकात्मक लिंक के माध्यम से अप्रत्यक्ष नहीं करने के लिए पदानुक्रम ट्रैवर्सल करने वाले आदेशों के विकल्प को जोड़ने की आवश्यकता होगी, और पुनरावर्ती चलने वाली ऐतिहासिक लिपियाँ तुरंत सुरक्षा समस्याएं बन जाएंगी। हालांकि यह ज्यादातर सिस्टम प्रशासकों के लिए एक मुद्दा है, लेकिन उपयोगकर्ताओं के विभिन्न वर्गों के लिए अलग-अलग चूक नहीं करना बेहतर है।

...

4.3 बीएसडी में, chgrpट्री ट्रैवर्सल के दौरान प्रतीकात्मक लिंक के समूह को बदल दिया, न कि लक्ष्य को। 4.4 BSD में प्रतीकात्मक लिंक में स्वामी, समूह, मोड या अन्य मानक UNIX सिस्टम फ़ाइल विशेषताएँ नहीं थीं।

और POSIX chgrpपृष्ठ से उचित यह है जो एक संभावित अपूर्ण -Rकार्रवाई की ओर इशारा करता है, या कम से कम क्या उपयोग किया जाता है:

सिस्टम V और BSD संस्करण अलग-अलग निकास स्थिति कोड का उपयोग करते हैं। कुछ क्रियान्वयन ने बाहर निकलने की स्थिति का उपयोग त्रुटियों की संख्या की गिनती के रूप में किया; यह अभ्यास असाध्य है क्योंकि यह वैध निकास स्थिति मानों की सीमा को ओवरफ्लो कर सकता है। मानक डेवलपर्स ने केवल 0 और> 0 को निर्दिष्ट मानों के रूप में निर्दिष्ट करके इन्हें मास्क करना चुना।


1
@StephaneChazelas - खुशी है कि आप समझ गए। ∆that very है kinduva गड़बड़ क्योंकि पूरी अनुमतियों के साथ im बहुत अच्छा नहीं है - खासकर जब SE विशेषताएँ शामिल हैं। कनेक्शन ढीला है - लिंक! = Ch {grp, own} लेकिन मुझे लगा कि अगर POSIX लोग इसे वर्तनी के लिए इतनी परेशानी में जाएंगे (पृष्ठ पर एक बड़ा चार्ट भी, तो) उसी कारण से लिंक लिंक हो सकता है समस्याओं का कारण तो दो-आर कार्रवाई हो सकती है। यदि आप कहते हैं कि यह आपके दोनों पैरों को मिला है, तो यह कुछ भी नहीं टूटेगा - जैसा कि आप कहते हैं, लेकिन अगर आप पहले से ही 1 बंद कर रहे हैं .. वैसे भी, मैंने इसे एक कारण के लिए विकीकृत किया। सच में मेरी बाइट नहीं। माफ़ करना।
चाटुकार

1
अच्छी बात है, मैंने -आर के बारे में नहीं सोचा था। कोई इमेजिंग कर सकता है कि आप chgrp पर एक डायरेक्टरी की खोज को ढीला या पढ़ सकते हैं, जो आपको वहां फाइलों की अनुमतियों को बदलने से रोक देगा, लेकिन फिर स्वामित्व या अनुमतियों को संभालने के लिए पारंपरिक यूनिक्स के तरीकों के साथ, मैं नहीं देख सकता कि कैसे इसे बनाने के लिए। जांच के लायक एक अन्य क्षेत्र जो मुझे लगता है कि एनएफएसवी 4 एसीएलएस सिस्टम पर होगा जो इसका समर्थन करता है (सोलारिस, फ्रीबीएसडी, एसयूएसई ...)
स्टीफन चेज़लस

@ StéphaneChazelas - क्या आपके प्रश्न का कोई पहलू है जो इस पोस्ट का उत्तर नहीं देता है?
मिकसर्व

उस गहन शोध के लिए बहुत-बहुत धन्यवाद। यह अच्छा होगा यदि आप NT यूनिक्स सबसिस्टम के साथ एक उदाहरण जोड़ सकते हैं जहां POSIX पाठ लागू होता है। मुझे यकीन नहीं है कि समुदाय के विकी जवाब के साथ बाउंटी कैसे काम करते हैं। मै उसे करने की एक कोशिश तो करूंगा।
स्टीफन चेजलस

@ स्टीफनचेलजैस - मैंने इन बातों की परवाह नहीं की और न ही कभी की। मैं बस उम्मीद कर रहा था कि मैंने इसे खराब नहीं किया। मुझे नहीं लगता कि मुझे यह अच्छा हिस्सा लगेगा हालांकि - क्या आपका मतलब NT Unix 4 है? Microsoft के आधिकारिक डॉक्स का दावा है कि जब वह अभी भी इंटरिक्स था, तो कम से कम पॉज़िक अनुपालन का दावा करता है, मैं और वे थोड़े अजीब तरीके से कहते हैं chgrp chown... जैसा कि आप उम्मीद करते हैं वैसा व्यवहार नहीं कर सकते ...
mikeserv

1

धारणा 1: यह निर्धारित करने के लिए नियम कि क्या chownलक्ष्य उपयोगकर्ता और समूह भागों की स्वतंत्र रूप से जांच की जाती है, अर्थात वे फॉर्म के हैं user_condition(target_uid, other_environment_parameters) && group_condition(target_gid, other_environment_parameters)

अनुमान 2: chown(file, -1, -1)सफल होता है।

धारणा 3: यह निर्धारित करने के नियम कि क्या chownसफल होता है, इस बात पर निर्भर नहीं करता है कि फाइल वर्तमान में किस समूह की है।

कोरोलरी: यदि chown(file, uid, gid)सफल होता तो ऐसा होता chown(file, -1, gid) && chown(file, uid, -1)

मैं एक यूनिक्स संस्करण के बारे में नहीं जानता जो इन मान्यताओं का उल्लंघन करेगा, वे बहुत सुरक्षित लगते हैं।

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


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


एक पुनरावर्ती कॉल के लिए, ऐसे किनारे मामले हैं जहां एक पूरे पास के chgrpबाद chownएक एकल पास सफल हो सकता है। यह एक बहुत ही ठोस तर्क नहीं है क्योंकि इसमें ऐसी निर्देशिकाएँ शामिल हैं जिनके मालिक को पता लगाने की अनुमति नहीं है, और ऐसे सभी मामलों से बचाव के लिए आवेदन करने वाले को वैसे भी अनुमति के साथ फ़ाइड करने की आवश्यकता होगी। फिर भी यह तकनीकी रूप से इस औचित्य की शर्त को पूरा करता है। मान लें कि चल रही प्रक्रिया में प्रभावी उपयोगकर्ता alice, प्रभावी समूह staffऔर फ़ाइल मालिकों को मनमाने ढंग से बदलने की क्षमता है (न कि उन्हें केवल दूर करने के लिए; कई यूनिक्स वेरिएंट में ऐसी क्षमता है, हालांकि यह गैर-रूट प्रक्रियाओं के लिए शायद ही कभी दी जाती है)।

$ ls -ld dir dir/file
d---rwx---  2 charlie  staff        1024 Apr  1  1970 dir
drw-rw----  2 charlie  staff          42 Apr  1  1970 file
$ chgrp -R students dir
$ chown -R bob dir
chown: dir: permission denied

ध्यान दें कि POSIX केवल यूनिक्स के बारे में नहीं है। कई गैर-यूनिक्स OS ऐसे हैं, जिनमें POSIX सबसिस्टम / API (उदाहरण के लिए Microsoft Windows NT) है। मुझे यकीन नहीं है कि उन स्थितियों को कोरोलरी का दावा करने के लिए पर्याप्त है। chgrpया chownसाइड इफेक्ट है कि एक दूसरे को ऐसा करने की क्षमता को प्रभावित कर सकते हैं। उदाहरण के लिए chownकरने की क्षमता को हटा chgrp, कि एक सच्चाई है। chgrpसैट्यूड / सेटगिड बिट को साफ करता है, यह एसीएल या सुरक्षा के संदर्भ के अन्य रूप को साफ कर सकता है ...
स्टीफन चेजालस

@ StéphaneChazelas हम सहमत हैं कि chownइसके बाद chgrpविफल हो सकता है, लेकिन सवाल इसके बारे में chgrpहै chown। हम्म, सुरक्षा संदर्भ ... अनिवार्य पहुँच नियंत्रण के साथ एक प्रणाली में, शायद chgrpएक फ़ाइल को दागी कर सकता है और इसे अब चिरस्थायी नहीं बना सकता है? जो दूर की कौड़ी लगती है।
गिल्स एसओ- बुराई को रोकें '

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

अपने नवीनतम संपादित करें। चाउ-आर बॉब के साथ: छात्रों, ऐलिस अभी भी खोज अनुमतियों को ढीला कर देगा dir, इसलिए इसके लिए काम करने के लिए, chownपहले फ़ाइलों को गहराई से संसाधित करने की आवश्यकता होगी और मुझे किसी भी कार्यान्वयन की जानकारी नहीं है। तो यह लगभग एक वैध मामला है जहाँ chgrp + chown विफल हो जाएगा जहाँ chmod u: g नहीं हो सकता है, लेकिन यह वास्तव में पाठ के पाठ के साथ नहीं जुड़ता है।
स्टीफन चेजालस

अप्रतिबंधित सचिव गलती और chownविवाद के लिए किनारे-प्रकरण पुनरावर्ती सिद्धांत दिखाई देते हैं।
मिकसर्व
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.