डेवलपर टूल · chmod कैलकुलेटर
चौथा chmod अंक: सेटुइड, सेटगिड और स्टिकी बिट कैसे काम करते हैं
· यह काम किस प्रकार करता है
chmod Unix डेवलपर-वर्कफ़्लो
4755 और 2775 जैसे मोड में एक प्रमुख अंक होता है जो बदलता है कि प्रोग्राम कौन चलाता है या नई फ़ाइलों का मालिक कौन है। यह पोस्ट तीन विशेष बिट्स के बारे में बताती है और वे ls -l में कैसे दिखाई देते हैं।
Drwxrwsr-x में s - एक साझा प्रोजेक्ट निर्देशिका अलग तरह से व्यवहार करती है और ls आउटपुट में एक अक्षर होता है जो मूल चीटशीट में नहीं है
Rwxrwsr-x में s दो तथ्यों को एक स्थिति में रिकॉर्ड करता है: सेटगिड सक्षम है, और समूह निष्पादन भी सक्षम है। कार्यान्वयन सेटगिड को ऑक्टल 2000 के रूप में संग्रहीत करता है, फिर समूह-निष्पादित वर्ण के लिए s को प्रतिस्थापित करता है। निर्देशिका प्रकार मार्कर के चयन के साथ, मोड 2775 drwxrwsr-x के रूप में दिखाई देता है जबकि चार अंकों का सारांश प्रमुख विशेष-बिट अंक को संरक्षित करता है।
वह आउटपुट एक रूपांतरण है, फ़ाइल सिस्टम अवलोकन नहीं। लक्ष्य चयनकर्ता यह बदलता है कि पेज बिट्स को कैसे समझाता है, लेकिन यह कभी भी कोई निर्देशिका नहीं खोलता या स्वामित्व की जांच नहीं करता है। किसी निर्देशिका के लिए, कार्यान्वित स्पष्टीकरण कहता है कि नई बनाई गई फ़ाइलें निर्देशिका के समूह को प्राप्त करती हैं। क्या कोई विशेष भंडारण प्रणाली उस व्यवहार को लागू करती है, या कोई अन्य नीति पहुंच को प्रभावित करती है, इसके लिए इस कैलकुलेटर से परे साक्ष्य की आवश्यकता होती है।
चौथा अंक और उसके अक्षर - 4, 2 और 1 परिचित मोड पर एक उपसर्ग के रूप में, निष्पादन स्थिति में s और t के रूप में दिखाया गया है, जब नीचे निष्पादन बिट बंद है तो अपरकेस
अग्रणी ऑक्टल अंक तीन स्वतंत्र मास्क को जोड़ता है: सेतुइड 4000 है, सेटगिड 2000 है, और चिपचिपा 1000 है। उनके अक्षर नौ-स्थिति वाले डिस्प्ले में वर्ण जोड़ने के बजाय मौजूदा निष्पादन स्थिति पर कब्जा कर लेते हैं। सेतुइड मालिक की स्थिति का उपयोग करता है, समूह की स्थिति को सेट करता है, और अन्य स्थिति को चिपचिपा बनाता है। मैट्रिक्स सामान्य पढ़ने, लिखने और निष्पादित करने से तीनों को अलग से उजागर करता है।
केस से अंतर्निहित निष्पादन बिट का पता चलता है। मोड 4755 rwsr-xr-x प्रस्तुत करता है क्योंकि स्वामी निष्पादन सेतुइड के साथ होता है; 4644 rwSr--r-- प्रस्तुत करता है क्योंकि ऐसा नहीं होता है। पार्सर दोनों रूपों को संबंधित विशेष और निष्पादित बिट्स में पढ़ता है। वही निचला-बनाम-ऊपरी नियम सेटगिड के लिए एस या एस और स्टिकी के लिए टी या टी उत्पन्न करता है, जो राउंड ट्रिप के दौरान सभी संयोजनों को संरक्षित करता है।
निष्पादनयोग्य पर सेटुइड - /usr/bin/passwd फ़ाइल स्वामी के विशेषाधिकारों के साथ कैसे चलता है और लिनक्स व्याख्या की गई स्क्रिप्ट पर सेतुइड को क्यों अनदेखा करता है
एक नियमित फ़ाइल के लिए, कार्यान्वित सेतुइड स्पष्टीकरण स्वामी के निष्पादन पर निर्भर करता है। जब दोनों बिट मौजूद होते हैं, तो पेज कहता है कि फ़ाइल चलाने से कॉलर की पहचान के बजाय फ़ाइल स्वामी की पहचान का उपयोग होता है। जब सेट्यूइड मालिक के निष्पादन के बिना मौजूद होता है, तो डिस्प्ले कैपिटल एस का उपयोग करता है और बताता है कि चलाने के लिए कुछ भी नहीं है। यह अनुभाग का संशोधित, स्रोत-समर्थित दायरा है।
कैलकुलेटर किसी विशेष निष्पादन योग्य की पहचान नहीं करता है, उसे लॉन्च नहीं करता है, या यह निरीक्षण नहीं करता है कि कोई प्लेटफ़ॉर्म स्क्रिप्ट के साथ कैसा व्यवहार करता है। इसका प्रमाण प्रदत्त मोड और लक्ष्य चयन है। मोड 4755 को setuid प्लस rwxr-xr-x में विघटित किया जा सकता है, और असाइनमेंट पूर्वावलोकन सामान्य क्लॉज़ के बाद u+s जोड़ता है। वह केवल प्रतिपादन और स्पष्टीकरण की पुष्टि करता है; कार्यक्रम की उपयुक्तता और वास्तविक निष्पादन बाहरी प्रश्न बने हुए हैं।
नियमित फ़ाइलों के लिए सेतुइड प्रतिपादन और स्पष्टीकरण
किसी निर्देशिका पर सेटगिड को सामान्य समूह अनुमतियों से स्वतंत्र रूप से दर्शाया जाता है। मोड 2775 2000 मास्क को मालिक और समूह 7 और अन्य 5 के साथ जोड़ता है। डिस्प्ले rwxrwsr-x दृश्यमान x को s से प्रतिस्थापित करते हुए समूह को पढ़ता, लिखता और निष्पादित करता रहता है। निर्देशिका स्पष्टीकरण नई बनाई गई फ़ाइलों के लिए निर्देशिका के समूह की विरासत के साथ विशेष बिट को जोड़ता है।
सेटगिड को बनाए रखते हुए समूह निष्पादन को हटाने से समूह-स्थिति अक्षर बड़े एस में बदल जाता है। वह दृश्य चेतावनी सीधे रेंडरर से आती है, लक्ष्य शब्दों की परवाह किए बिना। पेज उन पूर्ण मानों की तुलना कर सकता है और दिखा सकता है कि कौन सा चेकबॉक्स बदल गया है, लेकिन यह किसी साझा निर्देशिका, उसके वर्तमान समूह या प्रविष्टियाँ बनाने वाली पहचान का निरीक्षण नहीं कर सकता है। विचारों के बीच सहमति अंकगणितीय साक्ष्य है, परिचालनात्मक अनुमोदन नहीं।
निर्देशिकाओं पर चिपचिपा सा - /tmp में प्रतिबंधित विलोपन और क्यों 1777 777 के समान नहीं है
स्टिकी अन्य-निष्पादित स्थिति पर कब्जा कर लेता है और ऑक्टल 1000 का योगदान देता है। निर्देशिका मोड 1777 के लिए, सभी सामान्य अनुमतियाँ सक्षम रहती हैं और अंतिम प्रतीकात्मक वर्ण t बन जाता है। कार्यान्वित निर्देशिका स्पष्टीकरण एक विलोपन और नाम बदलने पर प्रतिबंध जोड़ता है, जबकि 777 स्पष्टीकरण बिना चिपचिपाहट के लिखने योग्य निर्देशिका के बारे में चेतावनी देता है। इस प्रकार कन्वर्टर अंतर्निहित आरडब्ल्यूएक्स ट्रिपल को बदले बिना एक-बिट अंतर को दृश्यमान बनाता है।
यदि चिपचिपा अन्य निष्पादन के बिना मौजूद है, तो अंतिम वर्ण इसके बजाय अपरकेस टी है। पार्सर और रेंडरर दोनों दिशाओं में उस अंतर को सुरक्षित रखते हैं। पेज वास्तविक साझा निर्देशिका, प्रविष्टि स्वामियों, या हटाए जाने के प्रयास का निरीक्षण नहीं करता है। इसका विश्वसनीय निष्कर्ष संकीर्ण है: आपूर्ति किए गए पूर्णांक में चिपचिपापन होता है, इसका निष्पादन साथी केस के माध्यम से दिखाई देता है, और निर्देशिका-उन्मुख व्याख्यात्मक पाठ का चयन किया जाता है।
व्यावहारिक उदाहरण: एक साझा निर्देशिका के लिए 2775 का निर्माण - अंक और समकक्ष प्रतीकात्मक chmod g+s,a+rwx,o-w प्राप्त करना
2775 को चार दृश्यमान घटकों के रूप में बनाएं: सेटगिड के लिए विशेष अंक 2, rwx के लिए स्वामी अंक 7, rwx के लिए समूह अंक 7, और r-x के लिए अन्य अंक 5। पूर्ण मान दर्ज करने से rwxrwsr-x उत्पन्न होता है। मैट्रिक्स अलग से सेटगिड का चयन करता है, जबकि सारांश उस विशेष बिट के साथ मालिक, समूह और अन्य अनुमतियों का नाम देता है।
उत्पन्न असाइनमेंट सूची u=rwx,g=rwx,o=rx,g+s है। यह नौ-अक्षर डिस्प्ले से भिन्न है लेकिन समान बारह-बिट मान का प्रतिनिधित्व करता है। निर्देशिका चुनने से स्पष्टीकरण कार्यान्वित समूह-विरासत शब्दों में बदल जाता है; फ़ाइल चुनने से 2775 बदले बिना शब्दांकन बदल जाता है। कैलकुलेटर कभी भी लक्ष्य के समूह को सत्यापित नहीं करता है या फ़ाइल नहीं बनाता है, इसलिए उदाहरण परिनियोजन नुस्खे के बजाय एक मॉडल बना रहता है।
व्यावहारिक उदाहरण: साझा-निर्देशिका मॉडल के लिए 2775 बनाना और पढ़ना
माउंट व्यवहार, क्षमताओं और अतिरिक्त प्लेटफ़ॉर्म शब्दार्थ को मॉडल नहीं किया गया है। पेज में कोई माउंट इनपुट, क्षमता सेट, कर्नेल क्वेरी या फ़ाइल सिस्टम जांच नहीं है। यह सेटुइड, सेटगिड और स्टिकी का प्रतिनिधित्व कर सकता है और नियमित फ़ाइलों और निर्देशिकाओं के बीच इसकी व्याख्या भिन्न हो सकती है। यह स्थापित नहीं कर सकता कि कोई बाहरी नियम वास्तविक लक्ष्य पर उन बिट्स को अलग-अलग तरीके से बेअसर, विस्तारित या व्याख्या करता है या नहीं।
यहां तक कि स्रोत के कोने के शब्दों को भी इंटरफ़ेस से परे सामान्यीकृत नहीं किया जाना चाहिए। एक वैध विशेष-बिट मोड साबित करता है कि पार्सर, रेंडरर, मैट्रिक्स, सारांश और जेनरेट किए गए असाइनमेंट सहमत हैं। यह साबित नहीं करता कि निष्पादन, वंशानुक्रम, या विलोपन व्यवहार हुआ। असमर्थित नीति दावों को निदान से दूर रखें, और कॉपी किए गए कमांड को निष्क्रिय पाठ के रूप में मानें जब तक कि एक अलग से निरीक्षण किया गया वातावरण लापता संदर्भ प्रदान नहीं करता है।
माउंट नीति, क्षमताएं और लागू न किए गए कोने के शब्दार्थ बाहरी बने हुए हैं
कार्यान्वित टेकअवे स्थितीय अर्थ के साथ एक राउंड ट्रिप है। मालिक के निष्पादन स्थिति के लिए सेटगिड मानचित्र, समूह निष्पादन के लिए सेटगिड, और अन्य निष्पादन के लिए चिपचिपा। लोअरकेस का अर्थ है कि संबंधित निष्पादन बिट चालू है; अपरकेस का मतलब है कि यह बंद है। प्रमुख अष्टक अंक और समर्पित चेकबॉक्स समान जानकारी को संरक्षित करते हैं, इसलिए अकेले गद्य से किसी विशेष बिट का अनुमान लगाने की आवश्यकता नहीं है।
सभी अभ्यावेदन की तुलना करके एक विशेष मोड का परीक्षण करें। 2775 के लिए, अग्रणी 2, समूह-स्थिति s, एक चेक किए गए सेटगिड बॉक्स और एक जेनरेटेड g+s जोड़ की अपेक्षा करें। बेमेल मिलान रूपांतरण समस्या को उजागर करेगा। समझौता केवल एक सुसंगत मोड स्थापित करता है। स्वामित्व, माउंट नीति, क्षमताएं, एप्लिकेशन नियम और chmod चलाने के परिणाम ब्राउज़र कैलकुलेटर के साक्ष्य से परे हैं।