डेवलपर टूल · chmod कैलकुलेटर
किसी निर्देशिका पर निष्पादन बिट क्या करता है, और 644 फ़ोल्डर क्यों टूटते हैं
· यह काम किस प्रकार करता है
chmod Unix डेवलपर-वर्कफ़्लो
किसी निर्देशिका पर, x कुछ भी चलाने के बारे में नहीं है; यह पारगमन का अधिकार देता है। यह पोस्ट read/search स्प्लिट, इससे उत्पन्न होने वाले विषम मामलों और उनसे बचने वाले तरीकों के बारे में बताती है।
जिस फ़ाइल को आप पढ़ सकते हैं उस पर अनुमति अस्वीकार कर दी गई है - फ़ाइल 644 है, निर्देशिका 644 है, और कैट अभी भी विफल है
एक पठनीय फ़ाइल तब पहुंच से बाहर रह सकती है जब उसकी निर्देशिका में संबंधित वर्ग के लिए निष्पादन का अभाव हो। आलेख 501 कॉल निर्देशिका फ़ोल्डर चलाने के बजाय ट्रैवर्सल निष्पादित करती है। कैलकुलेटर की निर्देशिका व्याख्या अधिक स्पष्ट है: सूचियाँ प्रविष्टियाँ पढ़ें, परमिट प्रविष्टि परिवर्तन लिखें, और निर्देशिका में प्रवेश करने और नाम से अंदर फ़ाइलों तक पहुँचने के लिए परमिट निष्पादित करें। मोड 644 में किसी भी वर्ग के लिए कोई निष्पादन बिट नहीं है।
जब लक्ष्य निर्देशिका पर सेट हो तो 644 की तुलना 755 से करें। पहला प्रतिपादन rw-r--r--; दूसरा rwxr-xr-x प्रस्तुत करता है। प्रत्येक वर्ग निष्पादित होता है, जबकि केवल स्वामी ही दोनों मोड में लिखना बरकरार रखता है। वह कंट्रास्ट प्रस्तुत अनुमति अंतर की व्याख्या करता है। पेज फ़ाइल का निरीक्षण नहीं करता है, एक्सेस प्रक्रिया की पहचान नहीं करता है, या परीक्षण नहीं करता है कि पूर्वज निर्देशिका वास्तविक पथ को अवरुद्ध करती है या नहीं।
सूचियां पढ़ें, ट्रैवर्स निष्पादित करें - कैसे निर्देशिका आर नाम दिखाती है जबकि एक्स आपको नाम से प्रविष्टियां खोलने और उन्हें स्टेट करने की सुविधा देता है
निर्देशिका पढ़ना और निष्पादित करना अलग-अलग स्पष्टीकरणों के साथ अलग-अलग झंडे हैं। पढ़ें लिस्टिंग प्रविष्टियों से मेल खाता है। निष्पादन निर्देशिका में प्रवेश करने और अंदर नामित फ़ाइलों तक पहुंचने से मेल खाता है। इसलिए संख्यात्मक मॉडल में एक वर्ग में एक के बिना दूसरा हो सकता है। मैट्रिक्स भार 4 पर रीड रखकर और प्रत्येक वर्ग अंक के भीतर भार 1 पर निष्पादित करके उस अंतर को दृश्यमान रखता है।
किसी अन्य कैटेगरी के अंक को 4 से 5 में बदलना एक केंद्रित प्रदर्शन है। प्रतीकात्मक ट्रिपल आर-- से आर-एक्स तक चलता है, और निर्देशिका स्पष्टीकरण लिस्टिंग को बनाए रखते हुए नाम-आधारित रीचैबिलिटी जोड़ता है। यह एक रूपांतरण तथ्य है, लाइव एक्सेस टेस्ट नहीं। स्वामित्व, पहचान, ACL प्रविष्टियाँ और अनिवार्य नीति अनुपस्थित हैं, इसलिए कैलकुलेटर यह नहीं कह सकता कि कौन सा वर्ग वास्तविक अनुरोध को नियंत्रित करता है।
चार संयोजन - x के बिना r, r के बिना x, दोनों और न ही, और प्रत्येक उपयोगकर्ता को वास्तव में क्या करने देता है
चार पढ़ने-और-निष्पादित संयोजन व्यापक सिस्टम व्यवहार निर्दिष्ट किए बिना प्रस्तुत करने योग्य हैं। अंक 4 है r--, अंक 1 है --x, अंक 5 है r-x, और अंक 0 है ---. एक निर्देशिका लक्ष्य के लिए, उत्पन्न गद्य उन चयनित बिट्स को लिस्टिंग और नाम-आधारित पहुंच के साथ जोड़ता है। लिखना एक स्वतंत्र ध्वज बना हुआ है और इसका तात्पर्य पढ़ने या निष्पादित करने से नहीं है।
तीन-अंकीय मोड को एक लेबल के रूप में मानने के बजाय एक समय में एक वर्ग को अलग करने के लिए मैट्रिक्स का उपयोग करें। जब भी कोई बॉक्स बदलता है तो पेज पूर्णांक को फिर से बनाता है, इसलिए मिलान अंक और प्रतीकात्मक स्थिति एक साथ चलती हैं। यह कोई निर्देशिका नहीं खोल सकता या लुकअप का प्रयास नहीं कर सकता. चार संयोजन सटीक रूप से मॉडल की गई अनुमतियाँ हैं, जबकि कोई भी प्रभावी परिणाम अलग से देखे गए लक्ष्य संदर्भ पर निर्भर करता है।
ट्रैवर्सल प्रत्येक पूर्वज पर लागू होता है - क्यों पथ के ऊपर एक प्रतिबंधात्मक निर्देशिका नीचे की हर चीज तक पहुंच को तोड़ देती है
अनुच्छेद 501 एक गुम पैरेंट-निर्देशिका निष्पादन अनुमति की पहचान करता है, जिसके कारण वैध फ़ाइल मोड पहुंच को हल नहीं कर सकता है। पथ में प्रत्येक निर्देशिका घटक अपना स्वयं का मोड प्रश्न प्रस्तुत करता है। कैलकुलेटर प्रत्येक आपूर्ति किए गए मूल्य को स्वतंत्र रूप से डिकोड कर सकता है और दिखा सकता है कि मालिक, समूह या अन्य निष्पादन मौजूद है या नहीं। यह पथ पर नहीं चल सकता या यह निर्धारित नहीं कर सकता कि अनुरोध करने वाली पहचान पर कौन सा वर्ग लागू होता है।
यह पूर्वज विश्लेषण को कैलकुलेटर सुविधा के बजाय एक बाहरी निरीक्षण वर्कफ़्लो बनाता है। यदि किसी अभिभावक को 750 के रूप में रिपोर्ट किया जाता है, तो पेज rwxr-x--- दिखाता है; यदि कोई अन्य 700 है, तो यह rwx------ दिखाता है। यह अंतर ठोस है, लेकिन स्वामित्व और प्रक्रिया सदस्यता ज्ञात होने तक कोई निष्कर्ष नहीं निकलता है। कमांड पूर्वावलोकन निष्क्रिय रहता है और कोई सबूत नहीं देता है कि किसी भी निर्देशिका को बदलना उचित है।
कार्यान्वित उदाहरण: एक वेब रूट को ठीक करना - सेवित फ़ाइल में / से प्रत्येक निर्देशिका की जाँच करना और 755 या 750 चुनना
वेब-रूट उदाहरण के लिए, ट्री के लिए एक मान निर्धारित करने के बजाय प्रत्येक घटक द्वारा आपूर्ति किए गए मोड का निरीक्षण करें। मोड 755 मालिक को rwx और समूह और अन्य r-x अनुदान देता है; मोड 750 समूह r-x को बनाए रखते हुए अन्य सभी अनुमतियाँ हटा देता है। कन्वर्टर उस अंतर को दृश्यमान बनाता है। यह किसी वेब प्रक्रिया की पहचान नहीं कर सकता, पथ की खोज नहीं कर सकता, या यह नहीं चुन सकता कि किस वर्ग को ट्रैवर्सल की आवश्यकता है।
दी गई फ़ाइल को उसकी निर्देशिकाओं से अलग से जांचें। एक आपूर्ति की गई फ़ाइल मोड जैसे 644 rw-r--r-- को प्रस्तुत करता है, जबकि निर्देशिका के रूप में चयनित समान संख्या विभिन्न क्रियाओं का वर्णन करती है और हर जगह निष्पादन का अभाव है। यह लक्ष्य-संवेदनशील शब्दांकन फ़ाइल पढ़ने को निर्देशिका ट्रैवर्सल के साथ भ्रमित होने से रोकता है। उपयुक्तता अभी भी वास्तविक स्वामित्व, प्रक्रिया पहचान, पूर्वजों और पेज से अनुपस्थित किसी भी पहुंच-नियंत्रण परत पर निर्भर करती है।
रिकर्सन सही तरीके से किया गया - पेड़ पर chmod -R 644 क्लासिक गलती क्यों है और कैसे कैपिटल X या -type d ढूंढें इससे बचा जाता है
पुनरावर्ती प्रदर्शन जानबूझकर मामूली है। इसे चुनने पर केवल -R उत्पन्न chmod कमांड में सम्मिलित होता है; कैलकुलेटर किसी पेड़ की गणना नहीं करता है या फ़ाइलों को निर्देशिकाओं से अलग नहीं करता है। पूर्ण 644 मोड को हर जगह लागू करने से प्रत्येक कक्षा में निर्देशिका निष्पादन स्पष्ट हो जाएगा। पेज उस परिणाम को प्रकट कर सकता है, लेकिन यह कैपिटल एक्स या फ़ाइल-प्रकार चयन वर्कफ़्लो को लागू नहीं करता है।
उत्पन्न प्रतीकात्मक असाइनमेंट भी निश्चित रहते हैं। 644 के लिए वे u=rw,g=r,o=r हैं, कोई सापेक्ष कमांड नहीं जो सशर्त रूप से ट्रैवर्सल को संरक्षित करता है। ls-शैली फ़ील्ड rw-r--r-- दिखाती है और इसे उस असाइनमेंट सूची के साथ भ्रमित नहीं होना चाहिए। किसी भी बाहरी रिकर्सन रणनीति को इस मार्ग के बाहर सत्यापित किया जाना चाहिए, जिसमें लक्ष्य चयन, लिंक हैंडलिंग और विभिन्न ऑब्जेक्ट प्रकारों पर रखे गए अंतिम मोड शामिल हैं।
इसमें क्या शामिल नहीं है - निर्देशिकाओं पर चिपचिपा और अस्त-व्यस्त व्यवहार, और ACL मास्क, जो उनके अपने पोस्ट में शामिल हैं
स्टिकी, सेटगिड और ACL मास्क सामान्य ट्रैवर्सल प्रश्न से अलग हैं। कैलकुलेटर चिपचिपा और सेटगिड प्रतिनिधित्व और लक्ष्य-संवेदनशील स्पष्टीकरण लागू करता है, लेकिन इस लेख की मुख्य तुलना को केवल पढ़ने और निष्पादित करने की आवश्यकता है। ACL मास्क का बिल्कुल भी प्रतिनिधित्व नहीं किया गया है। एक सही आधार-मोड रूपांतरण यह स्थापित नहीं कर सकता है कि अतिरिक्त प्रविष्टियाँ किसी विशेष पहचान के लिए पहुंच प्रदान करती हैं या सीमित करती हैं।
उमास्क भी परीक्षण से बाहर है। पेज पूर्ण मोड को स्वीकार करता है, न कि उससे पहले की प्रक्रिया सेटिंग्स को। यदि कोई निर्देशिका 644 के साथ दिखाई देती है, तो कन्वर्टर लापता निष्पादन स्थिति दिखा सकता है और किसी अन्य आपूर्ति किए गए मान के लिए उम्मीदवार कमांड उत्पन्न कर सकता है। यह नहीं कह सकता कि यह पद्धति क्यों उत्पन्न हुई, क्या स्वामित्व गलत है, या क्या इसे बदलने से वास्तविक विफलता का पता चलता है।
टेकवे: निर्देशिकाओं को प्रयोग करने योग्य होने के लिए x की आवश्यकता होती है - और कैलकुलेटर 644 और 755 के बीच अंतर को r-- बनाम r-x के रूप में दृश्यमान बनाता है
टिकाऊ निष्कर्ष यह है कि निर्देशिका x इस कैलकुलेटर के स्पष्टीकरण में प्रविष्टि और नाम-आधारित पहुंच योग्यता का प्रतिनिधित्व करती है। मोड 644 समूह और अन्य के लिए r-- प्रदर्शित करता है, जबकि 755 दोनों के लिए r-x प्रदर्शित करता है और स्वामी निष्पादन को भी जोड़ता है। समकालिक अष्टक क्षेत्र, प्रतीकात्मक क्षेत्र, मैट्रिक्स और गद्य किसी भी परिचित संख्या को सार्वभौमिक रूप से सही माने बिना उस अंतर को निरीक्षण योग्य बनाते हैं।
कुछ भी लागू करने से पहले अंकगणित से परे निदान करें। प्रासंगिक पहचान, स्वामित्व, प्रत्येक पूर्वज द्वारा प्रदत्त मोड और लक्ष्य प्रकार की पुष्टि करें। फिर किसी भी पूर्ण उम्मीदवार मान को सत्यापित करने के लिए कैलकुलेटर का उपयोग करें। यह विकृत नोटेशन को अस्वीकार कर देगा और दिखाएगा कि कौन से बिट बदलते हैं, लेकिन यह कभी भी रास्ता नहीं खोलता है, chmod निष्पादित नहीं करता है, एप्लिकेशन नीति का मूल्यांकन नहीं करता है, या यह साबित नहीं करता है कि पारंपरिक मोड बिट्स ही एकमात्र प्राधिकारी हैं।