सुडो सु और सूदो-आई के बीच कार्यात्मक अंतर क्या है?


19

इस उदाहरण में एक को दूसरे पर क्यों पसंद किया जाता है?

sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit

कृपया उबंटू प्रलेखन के लिंक प्रदान करें।


कृपया अपनी पसंद के "स्वीकार किए गए" उत्तरों पर पुनर्विचार करें। सबसे कम मतदान वाला वास्तव में एकमात्र सही है।
काइल स्ट्रैंड

जवाबों:


15

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

Thei (आरंभिक लॉगिन अनुकरण) विकल्प लक्ष्य उपयोगकर्ता के पासवर्ड डेटाबेस प्रविष्टि द्वारा निर्दिष्ट शेल को एक लॉगिन शेल के रूप में चलाता है। इसका मतलब यह है कि लॉगिन-विशिष्ट संसाधन फ़ाइलों जैसे कि .profile या .login को शेल द्वारा पढ़ा जाएगा। यदि कोई आदेश निर्दिष्ट किया जाता है, तो इसे शेल के .c विकल्प के माध्यम से निष्पादन के लिए शेल में पास किया जाता है। यदि कोई कमांड निर्दिष्ट नहीं है, तो एक इंटरैक्टिव शेल निष्पादित किया जाता है।

स्रोत: मैनपेज


1
"सु का उपयोग सुरक्षा मुद्दा बनाता है, और अनिवार्य रूप से खतरनाक है।" क्या?
मोनिका

1
अगर आप चलाते sudo suहैं तो आपसे पासवर्ड मांगा जाता है, रूट पासवर्ड नहीं। रूट उपयोगकर्ता को पासवर्ड की आवश्यकता भी नहीं होती है। भले ही, अगर कोई व्यवस्थापक रूट पासवर्ड का उपयोग कर रहा है, तो इसका मतलब यह नहीं है कि सभी नियमित उपयोगकर्ता इसे जानते हैं।
रोकना मोनिका

2
नहीं यह नहीं होगा। रूट के रूप में sudoचलाता है su, और रूट suकिसी भी उपयोगकर्ता को अपना पासवर्ड जाने बिना कर सकते हैं। सिस्टम कैसे काम करता है, इसके बारे में मौलिक गलतफहमी IMO के लायक है।
बंद करो मोनिका

3
और आपकी टिप्पणियों को हटाना भ्रम में जोड़ता है।
बंद करो मोनिका

1
आप इसे बहुत बेहतर नहीं बना रहे हैं। sudo -iरूट के पासवर्ड के लिए भी नहीं पूछेंगे, इसलिए यह सवाल के लिए प्रासंगिक नहीं है।
बंद करो मोनिका

14

sudo suकेवल वर्तमान उपयोगकर्ता को रूट में बदलता है। पर्यावरण सेटिंग्स (जैसे PATH) समान रहती हैं।

sudo -i एक नया वातावरण बनाता है जैसे कि रूट ने अभी लॉग इन किया था।

यदि आप अन्य उपयोगकर्ताओं का उपयोग करते हैं तो अंतर अधिक ध्यान देने योग्य है। आपके बाद sudo su bobबॉब होगा, लेकिन उसी जगह पर। sudo -i -u bobआपके द्वारा बॉब के बाद , बॉब के होम डायरेक्टरी में, बॉब के डिफ़ॉल्ट शेल के साथ और बॉब के साथ .profileऔर किसी भी अन्य लॉगिन स्क्रिप्ट को चलाया जाएगा।

man sudoक्या -iकरता है के अधिक विवरण के लिए देखें । दुर्भाग्य से, man suविवरण पर प्रकाश है।


का एक संस्करण मिला man su(लॉगिन -1 से: 4.1.4.2 + svn3283-3ubuntu5.1) जो कहने के लिए निम्नलिखित है:

$ PATH /etc/login.defs विकल्प ENV_PATH या ENV_SUPATH (नीचे देखें) के अनुसार रीसेट करें;

यदि इसे सेट किया गया था, तो $ IFS "<space> <टैब> <newline>" पर रीसेट हो गया।

ध्यान दें कि पर्यावरण के लिए डिफ़ॉल्ट व्यवहार निम्नलिखित है:

$ HOME, $ SHELL, US USER, $ LOGNAME, $ PATH, और $ IFS पर्यावरण चर रीसेट किए जाते हैं।

यदि --login का उपयोग नहीं किया जाता है, तो पर्यावरण को कॉपी किया जाता है, ऊपर के चर को छोड़कर।

यदि --login का उपयोग किया जाता है, तो $ TERM, $ COLORTERM, $ DISPLAY और $ XAUTHORITY वातावरण चर कॉपी किए जाने पर कॉपी किए जाते हैं।

अन्य वातावरण PAM मॉड्यूल द्वारा सेट किए जा सकते हैं।

तो क्या और किस हद तक sudo suपर्यावरण बदलता है यह आपके वितरण और सेटअप पर निर्भर करता है। इस प्रकार sudo -iसैद्धांतिक रूप से अधिक पोर्टेबल है।


su पर्यावरण सेटिंग में बदलाव करता है , और इसका उपयोग -या लॉगिन का अनुकरण करने के लिए किया जा सकता है -l। बिना भी -l, $PATH है बदल दिया है। उन्हें बनाने से पहले इन दावों का परीक्षण करें! (क्या आपका मतलब है कि PWDवही रहता है?)
काइल स्ट्रैंड

असली सवाल है, वहाँ के बीच एक अंतर है sudo su -और sudo -i?
काइल स्ट्रैंड

1
आप स्पष्ट रूप से इस पर कुछ विचार कर रहे हैं और वास्तव में शेल में कुछ परीक्षण कर रहे हैं, इसलिए मैं अपने स्निपी "इन दावों का परीक्षण" टिप्पणी के लिए माफी चाहता हूं। उस ने कहा, अपने सिस्टम पर मैं निरीक्षण करता हूं कि $PATHजब मैं suबिना sudoरूट पासवर्ड का उपयोग करता हूं तो बदल जाता है । के अनुसार info su(जो आपके उत्तर में लिंक करने के लिए एक बेहतर बात हो सकती है), suवास्तव में आपके द्वारा बन रहे उपयोगकर्ता के लिए पासवर्ड प्रविष्टि पढ़ता है। संभवतः $PATHमैं जो परिवर्तन देख रहा हूं वह प्रणाली-निर्भर है (मैं डेबियन 7 पर हूं)।
काइल स्ट्रैंड

1
हममम। मेरा man su(जो आपके द्वारा लिंक किए गए से अधिक लंबा है) कहता है कि यह उसी का हिस्सा है shadow-utils 4.1.5.1। मेरा manपृष्ठ यह भी कहता है कि $PATHयदि --preserve-environmentउपयोग किया जाता है तब भी सेट किया जाता है। इसलिए मुझे लगता है कि यह वास्तव में के विभिन्न संस्करणों के बीच का अंतर है su
काइल स्ट्रैंड

1
व्यवहार आपके PAM कॉन्फ़िगरेशन से भी प्रभावित होता है। /etc/pam.d/sudoऔर /etc/pam.d/suपूरी तरह से अलग या बिल्कुल समान चीजों को करने के लिए सेट किया जा सकता है।
मोनिका

7

मुख्य समस्या एक है (ऐसा नहीं) समझदार वातावरण सेटिंग्स।

sudo suनए शेल का उपयोग करने वाले को कमांड जारी करने वाले उपयोगकर्ता से इसका वातावरण मिलता है - जो समस्याग्रस्त हो सकता है।

sudo -iआप के साथ एक साफ जड़ खोल मिलता है।

सूडो और गोले पर विशेष नोट देखें

यह देखने के लिए रहता है कि रूट शेल बनाने के लिए यह बिल्कुल भी आवश्यक नहीं है।


आपके द्वारा कहे गए "विशेष नोट्स" उसी sudo -iके समान हैं sudo su -, जो वास्तव में कमांड जारी करने वाले उपयोगकर्ता से इसका वातावरण प्राप्त नहीं करता है
काइल स्ट्रैंड

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