Sudo उपयोगकर्ता और रूट उपयोगकर्ता के बीच अंतर [बंद]


21

/etc/sudoersफ़ाइल सूचियों जो उपयोगकर्ताओं के साथ क्या कर सकते हैं sudoआदेश

रूट उपयोगकर्ता /etc/sudoersफ़ाइल बनाता है और संशोधित करता है ।

यह अवधारणा मेरे लिए समझना मुश्किल है।

यदि sudo privilage वाले सभी उपयोगकर्ता sudoersसमूह से संबंधित हैं , तो वे सभी sudo suकमांड देकर रूट बन सकते हैं ।

फिर वास्तविक रूट उपयोगकर्ता कौन है और वह sudoers समूह में उपयोगकर्ताओं की शक्तियों को कैसे नियंत्रित करता है?

कृपया इसे मुझे समझाएं।


4
मुझे लगता है कि आपको इस बात का विस्तार करना होगा कि किस हिस्से को समझना मुश्किल है।
garethTheRed

रूट उपयोगकर्ता कौन है यह सवाल मेरे लिए समझना मुश्किल है। HUMN उपयोगकर्ताओं को केवल sudoers समूह के लिए belng कर सकते हैं क्योंकि
Rancho

@rancho इस सवाल को अपडेट करें, कृपया
पीटर


आपके अंतर्निहित प्रश्न का सरल उत्तर (उत्तर पर टिप्पणियों के आधार पर): यह सच है कि rootपहुंच और sudoअधिकारों के बीच अंतर अप्रासंगिक हो जाता है यदि आप sudo suचलाने की अनुमति देते हैं। हालाँकि, आपको इसकी अनुमति नहीं है। आप केवल कमांड के एक विशिष्ट सेट की अनुमति दे सकते हैं, उदाहरण के लिए अपने जूनियर सिसडमिन को sudoकेवल विशिष्ट बैकअप कमांड के लिए उपयोग करें।
वाइल्डकार्ड

जवाबों:


29

कार्यकारी सारांश: "रूट" व्यवस्थापक खाते का वास्तविक नाम है। "सुडो" एक कमांड है जो आम उपयोगकर्ताओं को प्रशासनिक कार्य करने की अनुमति देता है। "सूडो" एक उपयोगकर्ता नहीं है।


लंबा जवाब:

"रूट" (उर्फ "सुपरसुसर") सिस्टम प्रशासक खाते का नाम है। नाम की उत्पत्ति थोड़ी पुरातन है, लेकिन इससे कोई फर्क नहीं पड़ता।

रूट उपयोगकर्ता के पास यूजर आईडी 0 है और नाममात्र में असीमित विशेषाधिकार हैं। रूट किसी भी फ़ाइल का उपयोग कर सकता है, किसी भी प्रोग्राम को चला सकता है, किसी भी सिस्टम कॉल को निष्पादित कर सकता है और किसी भी सेटिंग को संशोधित कर सकता है। (लेकिन नीचे देखें)।

"Sudo" कमांड के आविष्कार से पहले, यदि आप प्रशासनिक कार्य करना चाहते थे, तो आपको रूट के रूप में लॉगिन करना होगा, या तो किसी तरह लॉगिन प्रॉम्प्ट प्राप्त करना होगा, या suकमांड के साथ ("su" स्थानापन्न उपयोगकर्ता के लिए छोटा होगा।) of

यह एक परेशानी का एक सा है, और यह भी आप उपयोगकर्ताओं को आंशिक प्रशासनिक अधिकार नहीं देते। तो "सुडो" कमांड ("स्थानापन्न उपयोगकर्ता के लिए संक्षिप्त") का आविष्कार किया गया था।

"Sudo" कमांड आपको सुपरयुसर विशेषाधिकारों के साथ कमांड निष्पादित करने देता है जब तक कि आपका यूजर आईडी sudoers फ़ाइल में है, आपको आवश्यक प्राधिकरण देता है।

इसलिए, उदाहरण के sudo vi /etc/hostsलिए , यदि आप रूट के रूप में चल रहे थे, तो आप मेजबान फ़ाइल को संपादित करने की अनुमति देंगे। आपको रूट पासवर्ड की भी आवश्यकता नहीं है, बस अपना लॉगिन पासवर्ड।

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

Sudoers फ़ाइल यह निर्धारित करती है कि कौन sudo कमांड का उपयोग कर सकता है और वे इसके साथ क्या कर सकते हैं।

Sudoers फ़ाइल वह है जो आपको कई प्रशासक देती है। प्रभावी रूप से, आपके व्यवस्थापक मूल हैं, साथ ही sudoers फ़ाइल में सूचीबद्ध प्रत्येक व्यक्ति। Sudoers फ़ाइल के बिना, केवल व्यवस्थापक रूट है।

वास्तव में, ऐसे संगठनों में जहां कोई और आपके लिए आपके कंप्यूटर का संचालन करता है, यह आपके अपने कंप्यूटर के रूट पासवर्ड को न जानने के लिए काफी सामान्य है - जब तक आप sudoers फ़ाइल में हैं, तब तक कोई फर्क नहीं पड़ता।

जिस कंपनी में मैंने काम किया था, एक गिन्नोर्म सर्वर फ़ार्म के साथ, बहुत कम, बहुत कम लोगों को रूट पासवर्ड पता था। इसके बजाय, एक डेटाबेस था जिसे किस सर्वर पर काम करने की अनुमति थी। एक स्वचालित प्रक्रिया आपको उन सर्वरों की sudoers फ़ाइलों में जोड़ देगी जिन्हें आप एक्सेस करने के लिए अधिकृत थे, और जब आपका प्राधिकरण समाप्त हो जाएगा तो आपको हटा देगा।


Restrict एक और बात: आधुनिक यूनिक्स संस्करण अब भी सीमित कर सकते हैं कि रूट उपयोगकर्ता क्या कर सकता है।

SELinux (सुरक्षा संवर्धित लिनक्स) के तहत , प्रभावी रूप से एक एक्सेस कंट्रोल सूची है जो यह निर्धारित करती है कि कौन सा प्रोग्राम क्या कर सकता है, और यहां तक ​​कि रूट उन प्रतिबंधों को नहीं पा सकता है।

Apple के सिस्टम इंटीग्रिटी प्रोटेक्शन (SIP) (उर्फ "रूटलेस") सिस्टम के तहत , कुछ फाइलों और निर्देशिकाओं को बंद कर दिया जाता है, ताकि उपयुक्त श्वेतसूची में केवल एप्लिकेशन ही उन तक पहुंच सकें।

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

Piece "लॉगिन:" प्रांप्ट यूनिक्स इतिहास का एक और पुरातन अंश है, जब हम सभी विंडो सिस्टम के बजाय धारावाहिक लाइनों पर एएससीआई टर्मिनलों का उपयोग करते हैं, तब वापस डेटिंग करते हैं। आप अभी भी loginकिसी भी टर्मिनल विंडो में टाइप करके , या कहीं से भी आपके कंप्यूटर के लिए एक ssh (या टेलनेट या rsh) खोलकर "लॉगिन:" संकेत प्राप्त कर सकते हैं। यदि आप चाहते हैं तो आप वहां से किसी अन्य उपयोगकर्ता के रूप में लॉग इन कर सकते हैं। (और यदि आपके कंप्यूटर में सीरियल पोर्ट हैं, तो आप अभी भी उन पर लॉगिन की अनुमति देने के लिए इसे कॉन्फ़िगर कर सकते हैं।)

Programs व्यक्तिगत कार्यक्रमों के लिए रूट एक्सेस दिया जाना भी संभव है। ये प्रोग्राम कुछ भी कर सकते हैं जो एक उपयोगकर्ता को रूट एक्सेस के साथ कर सकते हैं, यहां तक ​​कि जब एक साधारण उपयोगकर्ता द्वारा चलाया जाता है। ये आमतौर पर विशिष्ट कार्यों तक सीमित होते हैं। उदाहरण के लिए, क्रॉस्टैब प्रोग्राम में रूट विशेषाधिकार हैं ताकि यह क्रोन टेबल को संपादित कर सके। जाहिर है, "सुडो" में मूल विशेषाधिकार हैं ताकि यह वही कर सके जो वह करता है।

Cover मैं एक और बिंदु को कवर करने जा रहा हूं जिसे मैंने पहले से अधिक चमक दिया था। मैं "व्यवस्थापक" और "रूट" का परस्पर उपयोग कर रहा हूं, लेकिन अन्य प्रकार के प्रशासक हैं। इन्हें अक्सर "भूमिका खाते" कहा जाता है, जिसका कहना है कि ये खाते वास्तविक मनुष्यों के नहीं हैं, बल्कि सिस्टम पर कुछ विशिष्ट भूमिका निभाने के लिए मौजूद हैं। यदि आप /etc/passwdअपने सिस्टम की फ़ाइल देख लेते हैं , तो आपको दर्जनों और ऐसे दर्जनों खाते मिलेंगे।

उदाहरण के लिए, यदि mysql आपके सिस्टम पर स्थापित किया गया था, तो एक "mysql" उपयोगकर्ता होगा, और डेटाबेस की सभी फाइलें, कॉन्फिग फाइल, और इसके बाद सभी उस उपयोगकर्ता के स्वामित्व में होंगे। केवल उस उपयोगकर्ता के पास फ़ाइलों तक पहुँचने और mysql सर्वर को चलाने के लिए आवश्यक अनुमतियाँ होंगी। एक अर्थ में, वह उपयोगकर्ता एक व्यवस्थापक खाता होगा, लेकिन केवल mysql के लिए।

यदि आपको डेटाबेस प्रशासनिक कार्यों को करने की आवश्यकता है, तो आप या तो su mysqlकमांड के साथ "mysql" बन जाएंगे , या उपयोग करेंगे sudoजहां sudoers फ़ाइल आपको उन विशिष्ट कमांड के लिए mysql विशेषाधिकार देगी।


1
Sudoers फ़ाइल क्या है देता है आप एक से अधिक व्यवस्थापक। प्रभावी रूप से, आपके व्यवस्थापक मूल हैं, साथ ही sudoers फ़ाइल में सूचीबद्ध प्रत्येक व्यक्ति। Sudoers फ़ाइल के बिना, केवल व्यवस्थापक रूट है।
एडवर्ड फाल

1
"SELinux (सुरक्षा संवर्धित लिनक्स) के तहत, प्रभावी रूप से एक एक्सेस कंट्रोल सूची है जो यह निर्धारित करती है कि कौन क्या कर सकता है, और यहां तक ​​कि रूट उन प्रतिबंधों को पार नहीं कर सकता है।" - अगर रूट उन प्रतिबंधों को पास नहीं कर सकता है, तो पहली बार में उन प्रतिबंधों को कौन बनाता है?
rancho

1
यह स्पष्ट करने के लिए: "प्रभावी रूप से, आपके प्रशासक मूल हैं, साथ ही सुडोल फ़ाइल में सूचीबद्ध प्रत्येक व्यक्ति।" sudoers प्रविष्टियों का अर्थ पूर्ण रूट या रूट-लेवल एक्सेस नहीं है; मैं स्वेन को एक निगरानी एजेंट को फिर से शुरू करने की क्षमता प्रदान कर सकता हूं जो मॉनीसर के रूप में चलता है।
जेफ स्कालर

1
The "sudo" command lets you execute commands with superuser privileges as long as your user id is in the sudoers file [..]। मेरी मशीन (सोलस ओएस 3) पर, यह गलत है। मेरा उपयोगकर्ता नाम sudoers फ़ाइल में नहीं है। और मैं अभी भी कर सकते हैं sudo
मार्टिन एंडरसन

2
पुराना उत्तर और यह पेडेंट्री है, लेकिन su"स्थानापन्न उपयोगकर्ता" का संक्षिप्त नाम है; sudoइसलिए "स्थानापन्न उपयोगकर्ता करते हैं"। आप suएक अन्य उपयोगकर्ता के रूप में लॉग इन करने के लिए उपयोग कर सकते हैं , न कि केवल root। और आप sudoकमांड को किसी अन्य उपयोगकर्ता के रूप में निष्पादित करने के लिए उपयोग कर सकते हैं ।
जोसफतव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.