लिनक्स में, रूट के विशेषाधिकार एक बिंदु पर "क्षमताओं" में विभाजित थे, इसलिए आप उस दस्तावेज को देखकर रूट के विशेष विशेषाधिकार की पूरी सूची प्राप्त कर सकते हैं man 7 capabilities
:।
आपके प्रश्न का उत्तर देने के लिए, एक कमांड को रूट के रूप में चलाने की आवश्यकता होगी जब उसे इन विशेषाधिकारों में से किसी एक की आवश्यकता होती है, और इसकी गैर-स्क्रिप्ट निष्पादन योग्य के पास इसकी फ़ाइल मेटाडेटा में निर्धारित प्रासंगिक क्षमता नहीं होती है (जैसे यदि एक पायथन स्क्रिप्ट को क्षमता की आवश्यकता होती है, तो क्षमता अजगर की रेखा में निर्दिष्ट अजगर दुभाषिया में होने की आवश्यकता होगी)।
ध्यान दें कि कुछ कमांड जिन्हें रूट एक्सेस की आवश्यकता होती है, sudo
उन्हें कुछ ऐसा करने की आवश्यकता नहीं है क्योंकि उनके निष्पादन में SUID बिट सेट है। यह बिट निष्पादन योग्य को मालिक (आमतौर पर रूट) के रूप में चलाने का कारण बनता है जब किसी के द्वारा निष्पादित किया जाता है जिसने पहुंच का निष्पादन किया है। एक उदाहरण sudo
खुद ही है क्योंकि बदलते उपयोगकर्ता एक विशेषाधिकार प्राप्त कार्रवाई है जो इसे करने की आवश्यकता है।
संपादित करें: मैं आपके प्रश्न पर ध्यान देता हूं कि आपके पास यह विचार हो सकता है कि आप यह निर्धारित कर सकते हैं कि इसे चलाने से पहले कमांड को रूट एक्सेस की आवश्यकता होगी। ऐसी बात नहीं है। एक प्रोग्राम को कभी-कभी रूट विशेषाधिकारों और अन्य समयों की आवश्यकता होती है, और यह प्रोग्राम द्वारा किया गया निर्णय हो सकता है क्योंकि यह रनटाइम के दौरान प्रदान किए गए डेटा के कारण होता है। उदाहरण के लिए, कॉल करना vim
, बिना किसी तर्क के, और फिर कुंजीपटों और चिपकाने की एक श्रृंखला के माध्यम से, इसे किसी फाइल में कुछ लिखने के लिए कहना, इसे लिखने की कोई अनुमति नहीं है, या शायद किसी अन्य आदेश को निष्पादित करने के लिए जिसे स्वयं रूट विशेषाधिकारों की आवश्यकता होगी। निष्पादित करने से पहले कमांड के बारे में कुछ भी संकेत नहीं दे सकता है कि इसे अंततः रूट एक्सेस की आवश्यकता होगी। यह कुछ ऐसा है जो केवल उस बिंदु पर निर्धारित किया जा सकता है जो कुछ ऐसा करने की कोशिश करता है जिसके लिए इसकी आवश्यकता होती है।
वैसे भी, यहां रूट के विशेषाधिकारों के संदर्भित मैनपेज से बहुत कम उदाहरण हैं:
- यूआईडी (सेटुइड (2), सेट्रेयुड (2), सेट्रेसिड (2), सेटफ्यूसिड (2)) की मनमाने ढंग से जोड़तोड़ करें;
- बायपास फ़ाइल पढ़ने, लिखने और अनुमति जांच को निष्पादित करती है। (डीएसी "विवेकाधीन अभिगम नियंत्रण" का एक संक्षिप्त नाम है।)
- सिग्नल भेजने के लिए बायपास की अनुमति की जाँच करें (देखें किल (2))। इसमें ioctl (2) KDSIGACCEPT ऑपरेशन का उपयोग शामिल है।
- विभिन्न नेटवर्क से संबंधित ऑपरेशन करें:
- इंटरफ़ेस विन्यास;
- आईपी फ़ायरवॉल, मास्किंग, और अकाउंटिंग का प्रशासन;
- रूटिंग तालिकाओं को संशोधित करें;
- इंटरनेट डोमेन विशेषाधिकार प्राप्त बंदरगाहों (1024 से कम पोर्ट संख्या) के लिए एक सॉकेट बांधें।
- लोड और अनलोड कर्नेल मॉड्यूल (देखें init_module (2) और delete_module (2));
- सेट सिस्टम घड़ी (सेसमोफ़ेडे (2), स्टाइम (2), एडजाइमेक्स (2)); वास्तविक समय (हार्डवेयर) घड़ी सेट करें।
- सिस्टम प्रशासन संचालन की एक श्रृंखला निष्पादित करें जिसमें शामिल हैं: quotactl (2), माउंट (2), umount (2), swapon (2), swapoff (2), sethostname (2), और setdomainname (2);
- रिबूट (2) और kexec_load (2) का उपयोग करें।
- चिरोट (2) का प्रयोग करें।
- अच्छा मूल्य (अच्छा (2), सेटपैरिटी) (2)) उठाएँ और मनमानी प्रक्रियाओं के लिए अच्छा मूल्य बदलें;