बात यह है, मैंने हमेशा सोचा था कि ये अनुमतियाँ एक दूसरे पर पड़ती हैं, सबसे सामान्य एक (अन्य -> समूह -> उपयोगकर्ता) के साथ शुरू होती है।
अगर ऐसा होता तो "अन्य" अनुमति सभी पर लागू होती।
दूसरे शब्दों में, अगर o = rwx कौन परवाह करता है कि समूह और उपयोगकर्ता के लिए क्या प्रमेय हैं?
यह आपके पिछले वाक्य से अलग है। यहां आप यह अनुमान लगा रहे हैं कि अनुमतियाँ एक साथ हैं या नहीं, उदाहरण के लिए कि userX के पास पढ़ने की अनुमति है यदि userX फ़ाइल का मालिक है और फ़ाइल उपयोगकर्ता-पठनीय है, या यदि कोई उपयोगकर्ता जो userX फ़ाइल का स्वामी है और फ़ाइल समूह है -अभिनय, या यदि फ़ाइल अन्य पठनीय है। लेकिन ऐसा नहीं है कि यह कैसे काम करता है। वास्तव में, o=rwx
इसका मतलब है कि rwx
अनुमतियाँ दूसरों पर लागू होती हैं, लेकिन यह उन संस्थाओं के बारे में कुछ नहीं कहती है जो अन्य नहीं हैं।
सबसे पहले, यह सीधे मायने नहीं रखता कि उपयोगकर्ता किस समूह से संबंधित है। कर्नेल में समूहों से संबंधित उपयोगकर्ताओं की धारणा नहीं है। कर्नेल क्या बनाए रखता है, प्रत्येक प्रक्रिया के लिए, एक उपयोगकर्ता आईडी ( प्रभावी यूआईडी ) और समूह आईडी (प्रभावी जीआईडी और पूरक जीआईडी) की एक सूची है । समूह लॉगिन समय पर निर्धारित होते हैं, लॉगिन प्रक्रिया द्वारा - यह लॉगिन प्रक्रिया है जो समूह डेटाबेस (जैसे /etc/group
) को पढ़ता है । उपयोगकर्ता और समूह आईडी बाल प्रक्रियाओं द्वारा विरासत में मिले हैं।
जब एक प्रक्रिया पारंपरिक यूनिक्स अनुमतियों के साथ एक फ़ाइल खोलने की कोशिश करती है:
- यदि फ़ाइल का मालिक उपयोगकर्ता प्रक्रिया का प्रभावी यूआईडी है, तो उपयोगकर्ता अनुमति बिट्स का उपयोग किया जाता है।
- अन्यथा, यदि फ़ाइल का स्वयं का समूह प्रक्रिया का प्रभावी GID है या प्रक्रिया का पूरक समूह ID में से एक है, तो समूह अनुमति बिट्स का उपयोग किया जाता है।
- अन्यथा, अन्य अनुमति बिट्स का उपयोग किया जाता है।
Rwx बिट्स का केवल एक सेट कभी उपयोग किया जाता है। उपयोगकर्ता समूह पर पूर्वता लेता है जो दूसरे पर पूर्वता लेता है। जब एक्सेस कंट्रोल लिस्ट होती है , तो ऊपर वर्णित एल्गोरिदम सामान्यीकृत है:
- यदि प्रक्रिया के प्रभावी यूआईडी के लिए फ़ाइल पर एक एसीएल है, तो इसका उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या एक्सेस दी गई है।
- अन्यथा, यदि प्रक्रिया के प्रभावी GID या प्रक्रिया के पूरक समूह ID में से किसी एक के लिए फ़ाइल पर ACL है, तो समूह अनुमति बिट्स का उपयोग किया जाता है।
- अन्यथा, अन्य अनुमति बिट्स का उपयोग किया जाता है।
एसीएलएस की पूर्वता भी देखें जब कोई उपयोगकर्ता मास्क के प्रभाव सहित एसीएल प्रविष्टियों का उपयोग कैसे किया जाता है, इसके बारे में अधिक जानकारी के लिए कई समूहों से संबंधित है ।
इस प्रकार -rw----r-- alice interns
एक फ़ाइल को इंगित करता है जिसे ऐलिस द्वारा पढ़ा और लिखा जा सकता है, और जिसे इंटर्न को छोड़कर अन्य सभी उपयोगकर्ताओं द्वारा पढ़ा जा सकता है। अनुमति और स्वामित्व वाली फ़ाइल ----rwx--- alice interns
केवल ऐलिस को छोड़कर इंटर्न के लिए सुलभ है (चाहे वह इंटर्न हो या नहीं)। चूंकि ऐलिस chmod
अनुमतियों को बदलने के लिए कॉल कर सकता है , यह कोई सुरक्षा प्रदान नहीं करता है; यह एक किनारे का मामला है। एसीएल के साथ सिस्टम पर, सामान्यीकृत तंत्र विशिष्ट उपयोगकर्ताओं या विशिष्ट समूहों से अनुमतियों को हटाने की अनुमति देता है, जो कभी-कभी उपयोगी होता है।
प्रत्येक क्रिया के लिए सभी बिट्स को पढ़ने या लिखने के बजाय बिट्स के एकल सेट का उपयोग करना (पढ़ना, लिखना, निष्पादित करना), कई फायदे हैं:
- यह ACL वाले सिस्टम पर उपयोगकर्ताओं या समूहों के एक समूह से अनुमतियाँ हटाने की अनुमति देने का उपयोगी प्रभाव है। एसीएल के बिना सिस्टम पर, अनुमतियों को एक समूह से हटाया जा सकता है।
- इसे लागू करना सरल है: बिट्स के कई सेटों को एक साथ संयोजित करने के बजाय, बिट्स के एक सेट की जांच करें।
- फ़ाइल की अनुमतियों का विश्लेषण करना सरल है, क्योंकि कम संचालन शामिल हैं।
¹ वे जब एक को बदल सकते हैं setuid या setgid प्रक्रिया निष्पादित किया जाता है। यह मुद्दे पर हाथ से संबंधित नहीं है।