डेवलपर टूल · chmod कैलकुलेटर
umask नई फ़ाइलों और फ़ोल्डरों की डिफ़ॉल्ट अनुमतियाँ कैसे तय करता है
· यह काम किस प्रकार करता है
chmod Unix डेवलपर-वर्कफ़्लो
नई फ़ाइलें 777 पर प्रारंभ नहीं होतीं; सबसे पहले मास्क लगाया जाता है. यह पोस्ट सटीक बिटवाइज़ ऑपरेशन दिखाती है, फ़ाइलें और निर्देशिकाएँ अलग-अलग क्यों होती हैं, और umask 022, 027 और 077 के बारे में कैसे तर्क करें।
फ़ाइलें जिन्हें वेब सर्वर नहीं पढ़ सकता - एक Cron जॉब 600 फ़ाइलों को nginx द्वारा संचालित निर्देशिका में लिखता है, और किसी ने भी किसी भी चीज़ पर chmod नहीं चलाया
एक नए देखे गए फ़ाइल मोड को यहां तब भी डिकोड किया जा सकता है, जब इसे बनाने वाली प्रक्रिया अज्ञात हो। 600 दर्ज करें और कैलकुलेटर rw------ दिखाता है: स्वामी पढ़ें और लिखें, समूह या अन्य के लिए कोई अनुमति नहीं। यह आपूर्ति किए गए परिणाम के बिट्स की व्याख्या करता है। यह स्थापित नहीं करता है कि एक निर्धारित कार्य ने वह मान क्यों उत्पन्न किया या क्या कोई वेब प्रक्रिया फ़ाइल को पढ़ सकती है।
अनुच्छेद 501 आवश्यक नैदानिक संयम प्रदान करता है। एक वैध मोड गलत स्वामित्व या मूल निर्देशिका पर गुम निष्पादन बिट के साथ सह-अस्तित्व में हो सकता है। यह पेज न तो प्रक्रिया पहचान और न ही पथ जानकारी प्राप्त करता है। यह प्रस्तावित 640 के साथ 600 की तुलना कर सकता है और जोड़े गए समूह-रीड बिट को उजागर कर सकता है, लेकिन यह मूल मोड को umask, एक सेवा, एक शेल या एक फ़ाइल सिस्टम को विशेषता नहीं दे सकता है।
नई अनुमतियाँ कहाँ से आती हैं - अनुरोधित मोड (आमतौर पर फ़ाइलों के लिए 666, निर्देशिकाओं के लिए 777) और प्रक्रिया का umask
अनुरोधित निर्माण मोड और उमास्क पेजभूमि इनपुट हैं, कैलकुलेटर नियंत्रण नहीं। कोई उमास्क फ़ील्ड नहीं है और कोई ऑपरेशन नहीं है जो फ़ाइल या निर्देशिका बनाता है। इसलिए कोई भी निर्माण-मोड उदाहरण बाहरी रूप से गणना किए गए परिणाम के रूप में आना चाहिए। एक बार आपूर्ति हो जाने पर, कैलकुलेटर उस परिणाम का अष्टक, प्रतीकात्मक, मैट्रिक्स, सारांश और सादे-अंग्रेजी रूपों में अनुवाद कर सकता है, बिना यह दावा किए कि मूल्य कैसे प्राप्त किया गया था।
यह संशोधित दायरा मायने रखता है क्योंकि सिंक्रनाइज़ आउटपुट इससे अधिक आधिकारिक दिख सकता है। 640 दर्ज करने से rw-r----- प्राप्त होता है और मालिक read/write प्लस ग्रुप रीड की पहचान होती है। पेज उस प्रतिनिधित्व को सत्यापित कर सकता है। यह किसी लॉगिन प्रक्रिया, निर्धारित कार्य, सेवा, कंटेनर, या भंडारण प्रणाली के लिए डिफ़ॉल्ट की भविष्यवाणी नहीं कर सकता, क्योंकि इनमें से कोई भी संदर्भ इसके इनपुट या कार्यान्वयन में दिखाई नहीं देता है।
अनुरोधित निर्माण मोड और उमास्क पेजभूमि इनपुट हैं जो यहां लागू नहीं किए गए हैं
AND-NOT अंकगणित इस कैलकुलेटर के बाहर किया जाना चाहिए। इसका कोर एक पूर्ण पूर्णांक को स्वीकार करता है और इसे नामित झंडों में विस्फोटित करता है; इसमें क्रिएशन मास्क के लिए कोई दूसरा ऑपरेंड नहीं है। नतीजतन, पेज मास्क फॉर्मूला प्रदर्शित नहीं कर सकता है, बिटवाइज़ ऑपरेशन के साथ घटाव की तुलना नहीं कर सकता है, या यह तय नहीं कर सकता है कि इसके परिणामी मोड में प्रवेश करने से पहले बाहरी गणना सही ढंग से की गई थी या नहीं।
यह जो जांच सकता है वह अंतिम बिट पैटर्न है। यदि कोई अन्य विश्वसनीय स्रोत 640 की आपूर्ति करता है, तो मैट्रिक्स स्वामी को पढ़ने और लिखने, समूह पढ़ने और कोई अन्य अनुमति नहीं दिखाता है। ग्रुप रीड ऑफ को बदलने से 600 का पुनर्निर्माण होता है, जबकि अन्य रीड ऑफ को बदलने से 644 का पुनर्निर्माण होता है। ये बदलाव कन्वर्टर के अंदर मोड अंकगणित को निर्माण-मुखौटा गणना या किसी अनदेखी प्रक्रिया के सबूत के रूप में प्रस्तुत किए बिना सत्यापित करते हैं।
AND-NOT अंकगणित कैलकुलेटर के बाहर किया जाना चाहिए
कैलकुलेटर परिणामी फ़ाइल और निर्देशिका मोड की तुलना कर सकता है, लेकिन यह कुछ भी नहीं बनाता है। 644 चयनित होने पर, नियमित-फ़ाइल स्पष्टीकरण फ़ाइल को पढ़ने और बदलने का वर्णन करता है; लक्ष्य को निर्देशिका में बदलने से वे क्रियाएँ सूची में बदल जाती हैं, प्रविष्टियाँ संशोधित हो जाती हैं और नामों तक पहुँच जाती हैं। पूर्णांक 644 रहता है. यह कंट्रास्ट दर्शाता है कि लक्ष्य प्रकार क्यों मायने रखता है, बिना यह बताए कि कौन सी रचना किसी भी प्रोग्राम अनुरोध को डिफॉल्ट करती है।
अलग से आपूर्ति किए गए 755 परिणाम का उसी तरह निरीक्षण किया जा सकता है। इसका डिस्प्ले rwxr-xr-x है, जिसमें सभी वर्गों के लिए निष्पादन सक्रिय है; 644 rw-r--r-- है, जिसमें निष्पादन पूरी तरह अनुपस्थित है। यह पेज उस अंतर को स्पष्ट रूप से उजागर करता है। यह 666, 777, 022, या किसी अन्य पेजभूमि इनपुट से कोई मान प्राप्त नहीं करता है, क्योंकि वे गणनाएँ CHMOD_SOURCES में लागू नहीं की जाती हैं।
कैलकुलेटर परिणामी फ़ाइल और निर्देशिका मोड की तुलना कर सकता है लेकिन कोई भी नहीं बनाता है
प्रतिबंधात्मक-मुखौटा उदाहरण के लिए, गणना को बाहरी रखें और केवल बताए गए परिणामों को डीकोड करें। यदि देखी गई नियमित फ़ाइल 640 है, तो कैलकुलेटर rw-r----- प्रस्तुत करता है; यदि कोई देखी गई निर्देशिका 750 है, तो यह rwxr-x--- प्रस्तुत करती है। मालिक दोनों में व्यापक पहुंच रखता है, समूह को एक संकीर्ण सेट प्राप्त होता है, और अन्य को कोई भी प्राप्त नहीं होता है। वे कथन सीधे पूर्ण मोड से अनुसरण करते हैं।
एक अन्य बाहरी रूप से आपूर्ति की गई जोड़ी, 600 और 700, उसी समीक्षा पद्धति को उसके मूल का दावा किए बिना दृश्यमान बनाती है। मोड 600 केवल स्वामी को फ़ाइल पर पढ़ने और लिखने की सुविधा देता है। मोड 700 केवल स्वामी को निर्देशिका पर पढ़ने, लिखने और निष्पादित करने की सुविधा देता है। कन्वर्टर प्रत्येक वर्ग और बिट की पुष्टि कर सकता है, लेकिन यह अपने स्वयं के साक्ष्य से किसी विशेष उमास्क सेटिंग के परिणाम से मेल नहीं खा सकता है।
व्यावहारिक उदाहरण: प्रतिबंधात्मक मास्क के लिए बाहरी रूप से गणना किए गए परिणामों को डिकोड करें
जहां एक प्रक्रिया उमास्क प्राप्त करती है वह बाहरी भंडार साक्ष्य है। कैलकुलेटर में शेल, शेड्यूलर, सेवा प्रबंधक, कंटेनर या प्रक्रिया वातावरण के साथ कोई एकीकरण नहीं है। इसलिए उन प्रणालियों में से किCAक को मोड के कारण के रूप में नामित करना पेज द्वारा देखी गई बातों से अधिक होगा। कहीं और एकत्रित भरोसेमंद मोड से शुरुआत करें, फिर इस मार्ग का उपयोग केवल उसके मालिक, समूह और अन्य बिट्स को सुपाठ्य बनाने के लिए करें।
कमांड पूर्वावलोकन उस साक्ष्य अंतर को बंद नहीं करता है। यह दिए गए पथ को उद्धृत कर सकता है और वैकल्पिक रूप से -R प्रदर्शित कर सकता है, लेकिन यह कभी भी पथ नहीं खोलता है या प्रक्रिया सेटिंग्स को नहीं पढ़ता है। इसी तरह, लक्ष्य चयनकर्ता किसी वस्तु प्रकार की खोज करने के बजाय व्याख्यात्मक भाषा को बदलता है। एक सुसंगत रूपांतरण अनुमतियों के प्रश्न को सीमित कर देता है; इससे यह पता नहीं चलता कि किस घटक ने मोड का चयन किया या क्या चयन जानबूझकर किया गया था।
जहां एक प्रक्रिया उमास्क प्राप्त करती है वह बाहरी भंडार साक्ष्य है
डिफ़ॉल्ट एCAल और स्पष्ट निर्माण मोड इस टूल के बाहर हैं। इसके डेटा मॉडल में एक स्वामी वर्ग, एक समूह वर्ग, बाकी सभी और तीन विशेष बिट्स हैं। कोई नामित ACL प्रविष्टियाँ, ACL मास्क, निर्माण कॉल या प्रोग्राम तर्क नहीं हैं। इसलिए कैलकुलेटर यह तय नहीं कर सकता है कि एक पूर्ण मोड किसी अन्य एक्सेस-कंट्रोल लेयर से उत्पन्न हुआ है या किसी विशेष अनुरोध की आपूर्ति करने वाले एप्लिकेशन से।
उन तंत्रों को एक साथ ध्वस्त किए बिना भी एक मोड की जाँच की जा सकती है। प्रेक्षित अष्टक मान दर्ज करें, नौ प्रतीकात्मक स्थितियों की पुष्टि करें, और मैट्रिक्स की तुलना चार अंकों के सारांश से करें। यदि वे सहमत हैं, तो पारंपरिक मोड को सही ढंग से डिकोड किया गया है। डिफ़ॉल्ट, ACL प्रभाव, या प्रोग्राम व्यवहार के बारे में किसी भी दावे के लिए निर्माता और फ़ाइल सिस्टम से साक्ष्य की आवश्यकता होती है, न कि उसी पूर्णांक की किसी अन्य व्याख्या की।
डिफ़ॉल्ट एCAल और स्पष्ट खुले मोड इस टूल के बाहर हैं
संशोधित वर्कफ़्लो की गणना कहीं और की जाती है, फिर यहां परिणामी मोड का निरीक्षण करें। पूर्ण ऑक्टल या एलएस-शैली स्ट्रिंग की आपूर्ति करें और सिंक्रनाइज़ किए गए फ़ील्ड को प्रत्येक बिट को उजागर करने दें। सत्यापन विकृत अष्टक अंकों और अक्षरों को गलत प्रतीकात्मक स्थिति में पकड़ता है। यह उमास्क अभिव्यक्ति को मान्य नहीं करता है, निर्माण संदर्भ की खोज नहीं करता है, या भविष्यवाणी नहीं करता है कि भविष्य की फ़ाइल या निर्देशिका को क्या प्राप्त होगा।
परिणाम को एक नैदानिक परत के रूप में मानें। एक डिकोड किया गया 640 या 750 एक अप्रत्याशित अनुदान या गुम निष्पादन बिट को प्रकट कर सकता है, जबकि लेख 501 हमें स्वामित्व और मूल-निर्देशिका ट्रैवर्सल को अलग से जांचने की याद दिलाता है। कारण बताने से पहले रुकें. कैलकुलेटर साबित करता है कि आपूर्ति किया गया मूल्य अनुमतियों को कैसे मैप करता है; यह शेल, सेवा, कंटेनर, ACL, या फ़ाइल सिस्टम डिफ़ॉल्ट के बारे में दावों के लिए कोई आधार प्रदान नहीं करता है।