माइक्रोसॉफ्ट 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 को निर्दिष्ट मानों के रूप में निर्दिष्ट करके इन्हें मास्क करना चुना।