फ़ाइल अनुमतियों में उपयोगकर्ता और समूह के मालिक की प्राथमिकता


20

मैं बस कुछ अनपेक्षित (मेरे लिए) लिनक्स (आर्क लिनक्स) पर फ़ाइल अनुमति के बारे में भाग गया। मूल रूप से मेरे पास है:

  • userX में groupX
  • fileX userX:groupX ---rwx----

मुझे क्या पहेलियाँ: मैं rwxपर कोई कार्रवाई नहीं कर सकता ( ) fileX। क्या यह सही है? क्या कोई कृपया पुष्टि कर सकता है कि यह वास्तव में अपेक्षित व्यवहार है?

मेरे द्वारा किए जाने वाले एकमात्र कार्य हैं mvऔर rmक्योंकि मेरे पास मूल निर्देशिका पर लिखने की अनुमति है।

बात यह है, मैंने हमेशा सोचा था कि ये अनुमतियाँ एक दूसरे पर पड़ती हैं, सबसे सामान्य एक (अन्य -> ​​समूह -> उपयोगकर्ता) से शुरू होती है। दूसरे शब्दों में, अगर o=rwxकौन परवाह करता है कि समूह और उपयोगकर्ता के लिए क्या सिद्धांत हैं? जाहिरा तौर पर यह मामला नहीं है लेकिन यह मेरे लिए बहुत मायने नहीं रखता है; यह उल्टा लगता है। केवल एक चीज जो इस दृष्टिकोण से उपयोगी लगती है, वह है एक बहुत विशिष्ट व्यक्ति / समूह को आसानी से बाहर करना, जो उस पर जाने के लिए एक स्मार्ट तरीके की तरह नहीं लगता है (imho)। इसके अलावा, मालिक (और समूह?) को chmodकिसी भी तरह से सही होना चाहिए ? इस मामले पर कोई विचार?


क्या आप निश्चित रूप से ग्रुपएक्स में हैं?
21

हां, निश्चित रूप से; के साथ प्रभावी gid की जाँच कीid
एलेक्स

जवाबों:


24

बात यह है, मैंने हमेशा सोचा था कि ये अनुमतियाँ एक दूसरे पर पड़ती हैं, सबसे सामान्य एक (अन्य -> ​​समूह -> उपयोगकर्ता) के साथ शुरू होती है।

अगर ऐसा होता तो "अन्य" अनुमति सभी पर लागू होती।

दूसरे शब्दों में, अगर 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 प्रक्रिया निष्पादित किया जाता है। यह मुद्दे पर हाथ से संबंधित नहीं है।


अच्छी तरह से ... "ढहने" के द्वारा मैं एक ही बात का मतलब है, एक OR ऑपरेशन :)
एलेक्स

आपके समय के लिए धन्यवाद; बहुत विस्तृत और सुंदर तकनीकी उत्तर के लिए +1
एलेक्स

बहुत बढ़िया जवाब। लेकिन मेरे पास आपके अंतिम बुलेट बिंदुओं के बारे में एक प्रश्न है: क्या इसे लागू करना और विश्लेषण करना वास्तव में सरल है? अनुमतियों की जाँच नहीं करेगा, ओपी के लिए अनुमतियों को एक साथ ओआरएफ के मामले में अनुमति देने के लिए नीचे आना चाहिए?
गार्डेनहैड

यह धार मामला मुझे अभी भी मूर्खतापूर्ण लगता है: (userX in groupX) + (groupX में userZ)। आपके पास एक fileX userX है: groupX --- rwx ----। अब मूल फ़ोल्डर निर्माता userX fileX तक नहीं पहुँच सकता है .. लेकिन userZ कर सकता है। और वे दोनों एक ही समूह का हिस्सा हैं। वास्तव में अचूक।
एलेक्सफॉल्क

4

अधिक विशिष्ट अनुमतियाँ कम विशिष्ट पर पूर्वता लेती हैं।

groupX में userX

fileX userX: groupX --- rwx ----

चूंकि आप फ़ाइल के स्वामी हैं इसलिए आपको केवल स्वामी की अनुमति दी जाएगी। मालिक की कोई अनुमति नहीं है। इस प्रकार, आप कुछ भी नहीं कर सकते। अगर आप फ़ाइल के मालिक और समूह के सदस्य नहीं होते तो समूह की अनुमतियां लागू होतीं।

कृपया विकी पेज के इस भाग को पढ़ें

https://en.wikipedia.org/wiki/File_system_permissions#Classes


2

-rwxrw---- इसका मतलब है कि स्वामी ने अनुमतियों को पढ़ा, लिखा और निष्पादित किया है, समूह ने पढ़ा और लिखा है, और अन्य के पास कोई अनुमति नहीं है।

आपके द्वारा प्रदान की गई अनुमतियाँ समूह को 'GroupX' फ़ाइल को पढ़ने, लिखने और निष्पादित करने की अनुमति देती हैं। यदि आप समूह "groupX" के सदस्य हैं, लेकिन फाइल के स्वामी ये अनुमतियाँ आपके लिए लागू नहीं होंगी।

इस मामले में मैं मान रहा हूं कि आप वास्तव में फाइल के मालिक हैं। केवल स्वामी के लिए निर्धारित अनुमतियाँ ही आपके लिए लागू होंगी। बेशक मालिक फ़ाइल पर अनुमतियों को ओवरराइड या बदलने में सक्षम है। हालाँकि, समूह ऐसा नहीं कर सकता है। उदाहरण के लिए विम आपको इस बात की पुष्टि करने के लिए संकेत देगा कि क्या आप किसी ऐसी फाइल पर लिख रहे हैं जिसे आपके पास लिखने की अनुमति नहीं है, लेकिन इसके मालिक हैं।

मैं आमतौर पर बाएं से दाएं अनुमतियाँ पढ़ता हूं। क्या मैं मालिक हूं? यदि हाँ, तो स्वामी की अनुमति लागू होती है। अगर नहीं; क्या मैं समूह का सदस्य हूं? यदि हाँ, तो समूह अनुमतियाँ लागू होती हैं। यदि नहीं, तो "अन्य" के लिए अनुमतियाँ मेरे लिए लागू होती हैं।

कुछ मामलों में यह एक फ़ाइल के मालिक होने के लिए उपयोगी है, लेकिन लिखित अनुमति नहीं है। यह आपको गलती से फ़ाइल को हटाने या संशोधित करने से बचाता है। व्यक्तिगत रूप से मैंने अपने सभी टेम्पलेट फ़ाइलों पर अनुमति 400 निर्धारित की है, बस यह सुनिश्चित करने के लिए कि मैं उन्हें दुर्घटना से संशोधित नहीं करता हूं। वही अनुमतियों को निष्पादित करने के लिए जाता है।


1
मेरा मानना ​​है कि आपने प्रश्न को गलत समझा। जब ओपी ने कहा कि अनुमतियाँ "पतन" के रूप में अन्य-> समूह-> उपयोगकर्ता, मुझे लगता है कि उनका मतलब था कि जब यह निर्धारित किया जाता है कि क्या आपकी कार्रवाई की अनुमति है, तो पहले "अन्य" अनुमतियों की जांच की जाती है, फिर "समूह" वाले और अंत में (यदि सभी और हैं) विफल) "उपयोगकर्ता" वाले।
जोसेफ आर।

@JosephR। हाँ, यह मेरा मतलब है :)
एलेक्स

ओह, मेरी क्षमायाचना। मैं उस हिस्से को हटा दूंगा। क्या उत्तर में कुछ उपयोगी है?
arnefm

ध्यान दें: आपको अपने उत्तर को थोड़ा संपादित करना चाहिए और दूसरे पैराग्राफ को हटा देना (या फिर से लिखना) क्योंकि यह "अस्पष्ट" की तरह है (यह पर्याप्त स्पष्ट नहीं है, मेरे द्वारा बताए गए व्यवहार के विपरीत)
एलेक्स

दूसरे विचार पर, मुझे उत्तर स्वीकार करने की जल्दी थी। उसके लिए माफ़ करना। तो आप कह रहे हैं कि कभी-कभी लिखने की अनुमति नहीं होने के लिए यह उपयोगी है ताकि आप गलती से कुछ महत्वपूर्ण फाइलों को न बदलें; लेकिन क्या अच्छा है जब दूसरों के पास पूर्ण अनुमति हो? (इसलिए ... आपको गलतियाँ करने से रोका जाएगा लेकिन दूसरों को नहीं )
एलेक्स

0

मैं एक उपयोगकर्ता को एक समूह में जोड़ने में सक्षम था, समूह को एक निर्देशिका (070) को अनुमतियाँ देता था, और उसके बाद फ़ोल्डर को एक्सेस करने में सक्षम था।

समूह बनाएँ: sudo groupadd groupname

उपयोगकर्ता को समूह में जोड़ें: sudo gpasswd -a उपयोगकर्ता नाम groupname

सुनिश्चित करें कि संपूर्ण निर्देशिका सही समूह स्वामित्व के अंतर्गत है (प्रदर्शन करने के लिए समूहनाम का वर्तमान सदस्य होना चाहिए): sudo chgrp -R groupname directory_path /

फ़ोल्डर के लिए केवल समूह rwx दें (बस rw किया जा सकता है, आवश्यकतानुसार समायोजित करें): sudo chmod -R 070 निर्देशिका -path

उपरोक्त करने के बाद, लॉगआउट और बैक-इन सुनिश्चित करें। यदि यह काम नहीं करता है, तो मशीन को पुनरारंभ करें। ऐसा करना मेरे लिए काम कर गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.