Umask की गणना लिनक्स में कैसे की जाती है?


15

इसलिए मुझे पता है कि umaskइस प्रारूप का उपयोग करके विशेषाधिकार प्राप्त उपयोगकर्ताओं को प्रतिबंधित कर सकते हैं umask ugo

मैं समझता हूं कि रीड = 4, लिखना = 2, और निष्पादित करना = 1. हालांकि, जब मैं टाइप करता हूं umask, तो यह 4 अंक लौटाता है जो 0022या है 0073। मुझे इस बात की कोई समझ नहीं है कि अब यह कैसे काम करता है क्योंकि एक अतिरिक्त अंक है। वह अतिरिक्त अंक क्या है और 0022इसका क्या मतलब है?

जवाबों:


18

0666 का डिफॉल्ट मास्क मान लें। umask0022 नया मास्क 0644 (0666-0022 = 0644) बना देगा, जिसका अर्थ है कि समूह और अन्य ने लिखा है (कोई लेखन या निष्पादन नहीं) अनुमतियाँ।

"अतिरिक्त" अंक (पहली संख्या = 0), निर्दिष्ट करता है कि कोई विशेष मोड नहीं हैं।

यदि मोड एक अंक से शुरू होता है तो इसे अष्टक के रूप में व्याख्या किया जाएगा अन्यथा इसका मतलब प्रतीकात्मक होना चाहिए।

0 एक अंक है, जैसा कि 1 (चिपचिपा सा) या 6 (SGID के लिए) है। एक आदेश जैसे कि chmodअन्य तरीकों से बुलाया जा सकता है, जैसे chmod ug+rw mydirकि आप उपयोगकर्ता और समूह के लिए पठन और लेखन अनुमतियाँ जोड़ेंगे। ध्यान दें कि इस मामले में मोड (बदसूरत + आरडब्ल्यू) एक अंक के साथ शुरू नहीं होता है, इस प्रकार इसकी व्याख्या ऑक्टल के रूप में नहीं बल्कि प्रतीकात्मक होगी।

देखें en.wikipedia.org/wiki/Chmod#Symbolic_examples Symbolics लिए और साथ ही www.lifeaftercoffee.com/2007/03/20/special-permission-modes-in-linux-and-unix/ के लिए विशेष मोड पर एक सा।

मैं नहीं जानता कि आप पहले बिट को अनमास्क करेंगे umask, लेकिन तकनीकी रूप से आप कर सकते हैं। यह समझाता है कि आप लगभग हमेशा इसे शून्य के रूप में क्यों देखते हैं।

Pinkfloydx33 को श्रेय

मुखौटा का पहला अंक विशेष अनुमतियों से संबंधित है जो स्वामी / समूह / अन्य मॉडल में इतनी सफाई से फिट नहीं होते हैं। जब फ़ाइल की अनुमति के लिए चार अंक प्रदान किए जाते हैं, तो पहला उन विशेष मूल्यों को संदर्भित करता है:

4000 = SUID
2000 = SGID
1000 = sticky bit

SUID बिट, सेट-यूज़र-आईडी के लिए छोटा, मालिक के प्रभावी उपयोगकर्ता आईडी (यूआईडी) के साथ चलने के लिए एक निष्पादन योग्य कार्यक्रम का कारण बनता है - दूसरे शब्दों में, कोई भी व्यक्ति जो इसे निष्पादित नहीं करता है, कार्यक्रम मालिक के अधिकारों के साथ निष्पादित करता है। यह आमतौर पर उन कार्यक्रमों में देखा जाता है जो रूट विशेषाधिकार की आवश्यकता वाली चीजों को करते हैं, लेकिन सामान्य उपयोगकर्ताओं द्वारा चलाए जाने के लिए होते हैं: passwdऐसा ही एक उदाहरण है।

सेट-समूह-आईडी के लिए छोटा SGID बिट बहुत समान है, लेकिन मालिक के प्रभावी समूह आईडी (gid) के साथ चलता है ।

स्टिकी बिट थोड़ा और अधिक जटिल है, यदि आप उस पर अधिक जानकारी चाहते हैं, तो आप इसके लिए मैनपेज पढ़ सकते हैं sticky

इन बिट्स का उपयोग निर्देशिकाओं के साथ भी किया जा सकता है, लेकिन उनके अर्थ बदल जाते हैं।

मुझे विश्वास नहीं है कि आप वास्तव umaskमें डिफ़ॉल्ट रूप से इनमें से किसी भी अतिरिक्त बिट्स को सक्षम करने की अनुमति देने के लिए सेट कर सकते हैं , लेकिन आप शायद कभी भी ऐसा नहीं करना चाहेंगे।

श्रेय user470379 को


1
दरअसल, आप पिछले 3 अंकों की तुलना में एक गैर-शून्य मान की आपूर्ति नहीं कर सकते। पॉज़िक्स के अनुसार: "फ़ाइल मान बिट्स के अलावा फ़ाइल मोड बिट्स निर्दिष्ट करने वाले मोड मानों की व्याख्या अनिर्दिष्ट है।" के अनुसार man 2 umask(संबंधित सिस्टम कॉल) "केवल फ़ाइल अनुमति बिट्स का maskउपयोग किया जाता है"। bashUmask 1000 में , एक त्रुटि उत्पन्न करता है: "ऑक्टल नंबर ऑफ़ रेंज"। तो अतिरिक्त 0 क्यों? मुझे लगता है कि यह केवल यह दर्शाना है कि संख्या अष्टक में है।
रिजि

उस पास्टबिन का umask के लिए कोई संदर्भ नहीं है, इसलिए मैं यह नहीं देखता कि यह कैसे प्रासंगिक है। chmod पहले तीन बिट्स को सेट करने की अनुमति देता है, लेकिन umask उन्हें मास्क करने की अनुमति नहीं देता है। (यानी आप लिख सकते थे chmod 6777 dropbox। और, वैसे, भी chmod ug+s।)
रिज़ि।

हाँ, आप सही हैं, पता नहीं मैं क्या सोच रहा था।
Braiam

@Braiam: नया मुखौटा गणना करने के लिए आपका सूत्र गलत है, यह नहीं है 0666-0022, यह 0666 & ~0022
cuonglm

1
मुझे लगता है कि आपत्ति उस तरह से नहीं है जिस तरह से नंबर लिखे गए हैं, बल्कि बिटकॉइन और (&) के बजाय घटाव ऑपरेटर (-) का उपयोग किया जाता है।
बाउलऑफर्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.