मैंने यहाँ उबंटू के sudo -sबजाय उपयोग करने में वरीयता के संबंध में कई टिप्पणियाँ देखी हैं sudo su।
मेरे लिए, कि दो आज्ञाएं बिलकुल एक जैसी हैं। लेकिन sudo -sबेहतर क्यों माना जाता है?
मैंने यहाँ उबंटू के sudo -sबजाय उपयोग करने में वरीयता के संबंध में कई टिप्पणियाँ देखी हैं sudo su।
मेरे लिए, कि दो आज्ञाएं बिलकुल एक जैसी हैं। लेकिन sudo -sबेहतर क्यों माना जाता है?
जवाबों:
मुझे लगता sudo -sहै कि "बेहतर" नहीं है, यह सिर्फ अलग है।
sudo -s
आपकी $ HOME निर्देशिका को बनाए रखता है, इसलिए जब आप प्रोग्राम शुरू करते हैं, तो वे आपकी (और रूट की) कॉन्फ़िग फ़ाइलों आदि का उपयोग करेंगे। नुकसान: वे $ HOME निर्देशिका में आपकी फ़ाइलों के स्वामित्व को भी बदल सकते हैं, विशिष्ट उदाहरण .Xauthorityफ़ाइल है, लेकिन मैं उस के साथ एक समस्या का अनुभव नहीं किया है।
sudo su या sudo -i
प्रोग्राम रूट के होम डायरेक्टरी और उसकी कॉन्फिग फाइल्स का उपयोग करेंगे। यह अधिक सहज हो सकता है, लेकिन इसका मतलब यह भी है कि यह आपके लिए निर्धारित किसी भी कॉन्फ़िगरेशन का उपयोग नहीं करेगा (उपनाम, बैश इतिहास, ...)।
क्योंकि sudo -sविशेष रूप से आपके पर्यावरण चर नहीं बदलेंगे $HOME, जो कि रहेगा HOME=/home/USER। यदि आप इसका उपयोग करते हैं, तो sudo suयह उन परिवर्तनों में बदल जाएगा, HOME=/rootजिनके नकारात्मक प्रभाव पड़ सकते हैं, जब आप अपने उपयोगकर्ता के होम डायरेक्टरी तक पहुंचने का प्रयास करते हैं।
तो मूल रूप से यह ग्राफिकल कार्यक्रमों को चलाने के दौरान sudoबनाम की तरह gksudoहै।
पर्यावरण के चर के साथ पहले ही बताए गए मतभेदों के अलावा, मैं sudo suमूर्खतापूर्ण और बेकार है क्योंकि आप रूट के रूप में sudoचलाने के लिए कह रहे हैं su, और इसे शेल को रूट के रूप में चलाने के लिए कहें। किसी प्रोग्राम को पूछने के लिए आपको रूट शेल देने के लिए क्यों कहा जाए, जब आप सिर्फ पहला प्रोग्राम आपको दे सकते हैं? क्या यह किसी भी व्यावहारिक अर्थ में मायने रखता है? नहीं, मैं सिर्फ पांडित्य हूं।
sudo suमूल होने के लिए उपयोग कर रहे हैं , तो हां, sudo -iउदाहरण के लिए , बस जाएं । लेकिन यह तब मदद करता है जब आप एक अलग उपयोगकर्ता बनना चाहते हैं sudo su - myuser:।
sudo -iबदल जाएगा /rootऔर sudo suउस निर्देशिका में रहेंगे जो आप हैं।
sudo -u myuser।
मैं उन मामलों पर विचार करते समय अन्य उत्तरों से असहमत होगा जब आप एक ऐसे उपयोगकर्ता के रूप में लॉग इन करना चाहते हैं जिनके पास शेल नहीं है। यह उपयोगकर्ताओं के लिए एक बहुत ही सामान्य मामला है जिसे सेवाओं को सौंपा गया है।
"Sudo su" का उपयोग करके उपयोगकर्ता द्वारा निर्दिष्ट शेल शुरू हो जाएगा। हालाँकि सर्वर प्रक्रिया के लिए सौंपे गए उपयोगकर्ता के मामले में, शेल / usr / bin / false है और लॉगिंग विफल हो जाएगी। इसके बजाय आपको निम्न दर्ज करना चाहिए:
sudo -sHu <server-user>
यदि आप उपयोगकर्ता को एक शेल असाइन नहीं करते हैं, तो भी आप उसे अपने घर के रास्ते में और cd में लॉग इन करेंगे
sudo -iयाsudo suसे बेहतर हैsudo -sकारणों के लिए यहाँ उल्लेख किया: ubuntuforums.org/showpost.php?p=6188826&postcount=4 इसके अलावा: इस के संभावित डुप्लिकेट है superuser.com/questions/29/...