"Sudo -u root echo` whoami` क्यों नहीं करता है?


11

Ubuntu पर वास्तविक रूट उपयोगकर्ता के रूप में कमांड चलाने के लिए आप sudo का उपयोग कैसे करते हैं? मैंने मूल रूप से सोचा था कि यह सुडो का डिफ़ॉल्ट व्यवहार था, जब तक कि मैं भागा नहीं था:

myuser@localhost:~$ sudo echo `whoami`
myuser

myuser@localhost:~$ sudo -u root echo `whoami`
myuser

हालाँकि, यह एक प्रकार का व्यवहार है जो मैं चाहता हूँ, लेकिन केवल एक पंक्ति में:

myuser@localhost:~$ sudo su -
root@localhost:~# echo `whoami`
root

11
क्यों गूंजता है whoami? बस सूद कहते हैं कि ओडामी .. रूट रूट
नियो

जवाबों:


26

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

sudo whoami

आपका whoamiबैक इन टिक्स का मूल्यांकन वास्तव में वर्तमान उपयोगकर्ता के रूप में एक उप-संस्करण में किया जाता है, यही कारण है कि आप देखते हैं कि आप क्या करते हैं।


2
ये गलत है। sudo रूट विशेषाधिकारों के साथ चलता है लेकिन रूट के रूप में नहीं।
मैनफ्रेड मोजर

@Moser, फिर उसका कमांड "रूट" क्यों प्रिंट करता है?
सेरिन

4
@ManfredMoser: यह की यूआईडी के साथ चलता है 0(शून्य), जो है कि वास्तव में क्या लोगों "रूट" कहते हैं। (यदि आप वास्तव में UID को बदले बिना sudoकेवल अपनी क्षमताओं को
बढ़ाते हैं

1
एम मोजर सकता है के बारे में सेट यूआईडी केवल बदल रहा है एक मुद्दा बना दिया है प्रभावी प्रक्रिया के यूजर आईडी, की आवश्यकता होती है कि प्रक्रिया ही तो असली यूजर आईडी बदलने के बारे में जाना है, के रूप में वास्तव में sudoकरता है। लेकिन xyr उत्तर को पढ़ने से, ऐसा नहीं लगता है कि वास्तव में ऐसा ही हुआ है।
JdeBP

7

उपधारा ( whoami) पहले निष्पादित की जाती है, जैसा कि आप, और परिणाम ( myuser) sudoकमांड में रखा गया है ; क्या sudoदेखता है echo myuser। इसे शॉर्टकट के रूप में सोचें:

tmpvar=`whoami`
sudo echo "$tmpvar"

1

ऐसा लगता है कि यहाँ कुछ चल रहा है ...

बैकटिक्स स्पष्ट रूप से वही कर रहे हैं जो दूसरों ने समझाया था, whoami'सुडो' का आह्वान करने से पहले विस्तार किया , और बैकटिक्स को वापसी 'रूट' से छोड़ दिया, जैसा कि अपेक्षित था।

लेकिन यह समझना उपयोगी है कि वास्तव में सुडो (8) के साथ क्या हो रहा है। इसलिए मैंने वास्तव में मैन पेज देखा!

"वास्तविक और प्रभावी यूआईडी और जीआईडी ​​उन लक्ष्य उपयोगकर्ता से मेल खाने के लिए तैयार हैं ..."

इसलिए ऐसा प्रतीत होता है कि देखे गए व्यवहार का प्रभावी और वास्तविक उपयोगकर्ता आईडी के बीच अंतर से कोई लेना-देना नहीं है।

यह "सुडो प्रिंटेनव" करने के लिए भी निराशाजनक है और सिर्फ "प्रिंटेनव" की तुलना करें, जिसने वास्तव में मुझे थोड़ा आश्चर्यचकित किया। यह दिखाता है कि [i] कुछ [/ i] निर्यात किए गए चर उपलब्ध हैं और अन्य नहीं हैं: यह उपयोगकर्ता के गृह, PATH, PS1, SHELL, अवधि, और EDITOR की सूचना देता है, लेकिन अन्य जैसे MANPATH, CVSROOT, LD_LIBRARY_PATH, या ENV। यह थोड़ा अजीब लगता है, क्योंकि इससे प्रोग्राम को मूल उपयोगकर्ता या रूट के रूप में अलग-अलग व्यवहार करने का कारण बन सकता है।


0

sudo आपको रूट विशेषाधिकारों के साथ किसी भी कमांड को चलाने की अनुमति देता है, लेकिन रूट उपयोगकर्ता के रूप में नहीं। इसका कारण यह है कि यह उपयोगी है कि इस सेटअप के साथ कई लोगों के पास अभी तक सभी लॉगिंग के मूल अधिकार हो सकते हैं और इसी तरह अभी भी इंगित करता है कि परिवर्तनों को किसने किया था।

यह सेटअप रूट पासवर्ड साझा करने से बेहतर है। जैसे कि यह उबंटू सहित कई वितरणों पर एक रूट उपयोगकर्ता होने की जगह ले चुका है।

दूसरी ओर sudo su आपको मूल उपयोगकर्ता बनाता है और इसलिए वास्तव में इसका उपयोग नहीं किया जाना चाहिए।

यह अंतर आपके देखे गए (सही) व्यवहार को भी स्पष्ट करता है।


6
नहीं। व्यवहार क्या बताता है कि शेल में प्रतिस्थापन कैसे काम करता है यह एक बहुत ही सरल मामला है। यह विशेषाधिकारों के साथ करने के लिए कुछ भी नहीं है।
JdeBP

-2

सूदो अस्थायी रूप से अनुदान देता है जो आप कभी भी हैं (आपको पहले स्थान पर सूडो की अनुमति है) मूल स्तर विशेषाधिकार।

रूट होने के लिए, आपको उबंटू के रूप में लॉग इन करना होगा जो कि डिफ़ॉल्ट रूप से उबंटू में अवरुद्ध है।

आपको इससे सावधान रहने की जरूरत है, सूडो जड़ नहीं है। यदि आप यह दिखाना चाहते हैं कि फ्रेड सुडो के रूप में कुछ निष्पादित कर रहा है, तो SUDO पर्यावरण चर चबाना, SUDO_COMMAND सबसे उपयोगी हो सकता है।


उबंटू में रूट अवरुद्ध है? क्या अापको उस बारे में पूर्ण विशवास है? मुझे पता है कि यह हतोत्साहित किया गया था, लेकिन मुझे लगा कि उन्होंने यूओआईडी का उपयोग करके वास्तव में एक अस्पष्ट पासवर्ड सेट करके नौसिखिए के लिए इसे थोड़ा और कठिन बना दिया है, जिसे सामान्य तरीकों का उपयोग करके बदला जा सकता है।
मार्टी फ्राइड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.