ऊपर दिए गए कुछ उत्तरों को सुधारने और सुधारने के लिए:
सबसे पहले, मैं GNU Coreutils 8.26 के लिए mkdir मैन पेज की जाँच करूँगा - यह हमें विकल्प '-m' और '-p' के बारे में जानकारी देता है (क्रमशः - mode = MODE और --parents के रूप में भी दिया जा सकता है) ):
... सेट [फ़ाइल] फ़ाइल मोड (chmod के रूप में), एक = rwx - umask नहीं
... कोई त्रुटि नहीं अगर मौजूदा है, तो माता-पिता निर्देशिका को आवश्यकतानुसार बनाएं
मेरे विचार में कथन अस्पष्ट और अस्पष्ट हैं। लेकिन मूल रूप से, यह कहता है कि आप निर्देशिका को "chmod संख्यात्मक अंकन" (ऑक्टल्स) द्वारा निर्दिष्ट अनुमतियों के साथ बना सकते हैं या आप "दूसरे तरीके" पर जा सकते हैं और / अपने umask का उपयोग कर सकते हैं।
साइड नोट: मैं कहता हूं कि "दूसरा तरीका" चूंकि ऑमस्क वैल्यू वास्तव में ऐसा लगता है - जैसे कि मास्क , छुपाना / हटाना अनुमति देने के बजाय उन्हें "अनुदान" देना, जैसा कि चामोद के संख्यात्मक ऑक्टल नोटेशन के साथ है।
आप शेल-बिल्टिन कमांड umask
को यह देखने के लिए निष्पादित कर सकते हैं कि आपका 3-अंकीय उमास्क क्या है; मेरे लिए, यह है 022
। इसका मतलब यह है कि जब मैं mkdir yodirectory
किसी दिए गए फ़ोल्डर में निष्पादित करता हूं (कहते हैं, महोम) और stat
इसे, मुझे इसका कुछ आउटपुट मिलेगा:
755 richard:richard /mahome/yodirectory
# permissions user:group what I just made (yodirectory),
# (owner,group,others--in that order) where I made it (i.e. in mahome)
#
अब, उन अष्टाधारी अनुमतियों के बारे में थोड़ा और जोड़ने के लिए। जब आप एक निर्देशिका बनाते हैं, तो "आपका सिस्टम" आपकी डिफ़ॉल्ट निर्देशिका परमिट ले जाता है '[जो नई निर्देशिकाओं के लिए लागू होता है (इसका मूल्य 777 होना चाहिए]] और यो (यू) मुखौटा पर थप्पड़ मारता है, प्रभावी रूप से उन परमिटों में से कुछ को छिपाता है।' मेरा ओमस्क 022 है - अब अगर हम 777 में से "022" घटाते हैं (तकनीकी रूप से घटाना एक निरीक्षण है और हमेशा सही नहीं होता है - हम वास्तव में परमिट या मुखौटा आईएनजी को बंद कर रहे हैं) ... हमें 755 मिलता है जैसा कि कहा गया है (या "स्टैटेड") ) पहले।
हम 3 अंकों के अष्टक के सामने '0' को छोड़ सकते हैं (इसलिए उन्हें 4 अंकों का नहीं होना चाहिए) क्योंकि हमारे मामले में हम नहीं चाहते थे (या उल्लेख नहीं किया गया था) किसी भी स्टिकबेट, सैट्यूड्स या सेटगिड्स (आप उन पर गौर करना चाहते हैं, Btw, वे उपयोगी हो सकते हैं क्योंकि आप 777 जा रहे हैं)। तो दूसरे शब्दों में, 0777 का तात्पर्य 777 (या 777 के बराबर) है (लेकिन 777 आवश्यक रूप से 0777 के बराबर नहीं है - क्योंकि 777 केवल अनुमतियों को निर्दिष्ट करता है, न कि सेट्यूड्स, सेटगिड्स आदि)
अब, अपने प्रश्न को व्यापक अर्थों में लागू करने के लिए - आपके पास (पहले से ही) कुछ विकल्प हैं। काम के ऊपर सभी उत्तर (कम से कम मेरे कोर्यूटिल्स के अनुसार)। जब आप उप- निर्देशिकाओं (नेस्टेड डायरेक्ट्रीज़) को एक बार में 777 अनुमतियों के साथ बनाना चाहते हैं, तो आप उपरोक्त समाधानों के साथ समस्याओं में भाग सकते हैं (या बहुत संभव है) । विशेष रूप से, यदि मैं 022 की उमंग के साथ माहोम में निम्नलिखित करता हूं:
mkdir -m 777 -p yodirectory/yostuff/mastuffinyostuff
# OR (you can swap 777 for 0777 if you so desire, outcome will be the same)
install -d -m 777 -p yodirectory/yostuff/mastuffinyostuff
मुझे 755
दोनों के लिए परमिट मिलेंगे yodirectory
और yostuff
, केवल 777
परमिट के लिए mastuffinyostuff
। तो ऐसा प्रतीत होता है कि umask
वह सब है जिस पर थप्पड़ मारा गया है yodirectory
और yostuff
... इसके चारों ओर पाने के लिए हम एक उपखंड का उपयोग कर सकते हैं:
( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )
और बस। यॉस्टफ, मास्टफिनोस्टफ, और योडायरेक्टरी के लिए 777 परमिट।
mkdir temp; chmod 777 temp
एक लाइन है। आप 'अस्थायी' को एक परिवर्तनशील बना सकते हैं और इसे बैश कमांड के रूप में सहेज सकते हैं। क्या यह आप करना चाहते हैं?