किसी के पास अभी तक कोई ✓ नहीं है, इसलिए मैंने एक उत्तर दिया है जिसमें वह सब कुछ है जो मैं सोच सकता था।
1 जब आप एक निष्पादन योग्य चलाते हैं, तो कभी-कभी ओएस आपकी अनुमति को अस्वीकार कर देगा। उदाहरण के लिए, रनिंग मेक उपसर्ग के साथ स्थापित होता है, सिस्टम पथ को सूडो की आवश्यकता होगी, जबकि उपसर्ग के साथ गैर-सिस्टम पथ सूडो के लिए नहीं पूछा जाएगा। ओएस कैसे तय करता है कि एक निष्पादन योग्य को चलाने के लिए एक उपयोगकर्ता की तुलना में अधिक विशेषाधिकार की आवश्यकता होगी, इससे पहले कि प्रोग्राम कुछ करता है?
नहीं जब एक निष्पादन योग्य शुरू किया जाता है तो यह नहीं किया जाता है। यह तब किया जाता है जब निष्पादन योग्य कुछ करने की कोशिश करता है।
Os फ़ाइल-सिस्टम अनुमतियाँ और क्षमताओं की जाँच करेगा (ये फ़ाइल-सिस्टम अनुमतियों द्वारा कवर नहीं किए जाते हैं, और इसमें अच्छे स्तर, mknode, कुछ निम्न-स्तरीय नेटवर्क सामग्री को कम करना, अन्य प्रक्रियाओं को मारना, रिबूट करना, समय निर्धारित करना आदि शामिल हैं)। अगर आपके पास परमिशन नहीं है तो आप ऐसा नहीं कर सकते। जड़ में क्षमताओं का पूरा सेट है, जिसमें CAP_DAC_OVERRIDE (फ़ाइल अनुमति को अनदेखा करें) शामिल है।
2 कभी-कभी, किसी प्रोग्राम को चलाने की अनुमति से इनकार नहीं किया जाएगा, लेकिन अगर यह सूडो के साथ चलाया जाता है, तो प्रोग्राम अधिक काम करने में सक्षम होगा। उदाहरण के लिए, कुछ सिस्टम डाइरेक्टरी पर डु चलने पर, केवल सुडो के साथ यह कुछ डायरेक्टरी को एक्सेस कर पाएगा। ओएस ऐसे कार्यक्रम को चलाने की अनुमति से इनकार क्यों नहीं करता है, या कार्यक्रम को चलाने से पहले अधिक सूचित विशेषाधिकार को प्राथमिकता दी जाती है?
ओएस यह नहीं जान सकता कि कार्यक्रम क्या करेगा। इसलिए यह शुरू होने से पहले अनुमतियों की जांच करने और क्या करना है यह तय करने के लिए कार्यक्रम पर निर्भर है। हालांकि यह ऐसा करने के लिए नहीं है।
नोट: एंड्रॉइड पर एक मैनिफ़ेस्ट है, इसमें एप्लिकेशन यह घोषित करता है कि वह किन विशेषाधिकारों का उपयोग कर सकता है। ओएस किसी भी एप्लिकेशन को मार देगा जो विशेषाधिकार का उपयोग करने की कोशिश करता है जिसे वह घोषित नहीं करता है, और ओएस हमेशा यह गारंटी नहीं देता है कि विशेषाधिकार को सम्मानित किया जा सकता है। उदाहरण के लिए नेटवर्क एक्सेस उपलब्ध नहीं हो सकता है।
2 क्या यह सच है कि जब भी sudo काम करेगा, su भी काम करेगा, और जब भी su काम करेगा, sudo भी काम करेगा? या su के साथ, एक उपयोगकर्ता sudo से अधिक कर सकता है? जब sudo काम करता है, और su की आवश्यकता होती है, तो OS कैसे तय करता है?
sudo
और su
लगभग पूरी तरह से करते हैं। कुछ अंतर पर्यावरण चर हैंडलिंग और अन्य ऐसे सुरक्षा मुद्दे से बचाव है। हालाँकि, वे दोनों उपकरण हैं जो आपको एक और उपयोगकर्ता बनने की अनुमति देते हैं, और दोनों में रूट का डिफ़ॉल्ट उपयोगकर्ता है।
su
मूल उपकरण था, इसके लिए आपको उस उपयोगकर्ता / समूह का पासवर्ड दर्ज करना होगा जिसे आप बदल रहे हैं।
sudo
आपके लिए अपना पासवर्ड दर्ज करने के लिए नया और आवश्यक है, डिफ़ॉल्ट रूप से, लेकिन उस उपयोगकर्ता / समूह के पासवर्ड को स्वीकार करने के लिए कॉन्फ़िगर किया जा सकता है जिसे आप स्विच कर रहे हैं, या कोई पासवर्ड नहीं। यह बहुत सारे कॉन्फ़िगरेशन की अनुमति देता है, किस कमांड के साथ यह काम करेगा, किसके लिए, और यह इस मशीन पर इस उपयोगकर्ता के लिए इस प्रोग्राम के साथ कैसे प्रमाणित करेगा। यह भी sudoedit
एक हिस्सा है sudo
और इसका उपयोग एक अलग उपयोगकर्ता के रूप में संपादन की अनुमति देने के लिए किया जा सकता है और एक संपादक से बाहर उप-शेलिंग के सुरक्षा मुद्दे से बचने के लिए (एस्केलेटेड विशेषाधिकारों के साथ एक मनमानी प्रक्रिया चलाने के लिए संपादक से निष्पादन को बुलाता है)।