अगर मैं sudo का उपयोग करता हूँ तो $ HOME क्यों नहीं बदलता है?


15

मुझे -H विकल्प की उम्मीद थी जिससे मुझे लक्ष्य उपयोगकर्ता का वातावरण मिले।

nbest @ geo: ~ $ sudo -H -u tanum echo $ HOME
/ घर / Nbest
nbest @ geo: ~ $ sudo -u tanum echo $ HOME
/ घर / Nbest
nbest @ geo: ~ $ sudo -i -u tanum echo $ HOME
/ घर / Nbest
nbest @ geo: ~ $ sudo -H -i -u tanum echo $ HOME
/ घर / Nbest

यह मुझे कहने की अनुमति देगा:

sudo -u tanum ls ~

और लक्ष्य उपयोगकर्ता की होम निर्देशिका सूची प्राप्त करें। मामला नहीं। क्या यह env_resetडिफ़ॉल्ट रूप से होता है sudoers?

यदि ऐसा है तो -एच का कोई प्रभाव नहीं है? इस व्यवहार को ओवरराइड करने का सबसे सुरक्षित तरीका क्या है?

यदि नहीं तो -एच का इच्छित प्रभाव क्या है?

कृपया मुझे सीधे सेट करें।

जवाबों:


16

$HOMEऔर आपके खोल ~द्वारा विस्तारित हो जाते हैं, उनकी व्याख्या नहीं की जाती है ।echo

दूसरे शब्दों में, एक तर्क के रूप में echoनहीं देखता $HOMEहै। यह वास्तव में देखता है /home/nbest। इसलिए निम्नलिखित कमांड बिल्कुल समान हैं (आपके मामले में):

nbest@geo:~$ sudo -H -u tanum echo $HOME
nbest@geo:~$ sudo -H -u tanum echo /home/nbest

आप जो भी प्रयास करते हैं ( -H, -i...,) आप कभी भी वांछित व्यवहार प्राप्त नहीं करेंगे। क्योंकि $HOMEआपके शेल द्वारा प्रतिस्थापित किया गया है और आपका शेल आपके उपयोगकर्ता के रूप में चलता है। sudoआपके शेल को किसी भी तरह से प्रभावित नहीं करता है।


इस 'समस्या' (जो वास्तव में एक विशेषता है) के आसपास काम करने के लिए, आप एक नया सब-आरंभ कर सकते हैं:

nbest@geo:~$ sudo -H -u tanum sh -c 'echo $HOME'

(ध्यान दें कि मैं विस्तार से बचने के लिए एकल उद्धरणों का उपयोग कर रहा हूं।) इस तरह, नया शेल shउपयोगकर्ता के टैनम के रूप में चलेगा और अपने होम डायरेक्टरी को प्रिंट करेगा ।


एक अन्य विकल्प का उपयोग करना है ~username, जो उस उपयोगकर्ता के घर तक विस्तारित हो जाता है, बिना उपयोग की आवश्यकता के sudoया su। प्रयत्न:

nbest@geo:~$ echo ~tanum

1
बेशक। कितना शर्मनाक है! sudo do what I mean
नील सर्वश्रेष्ठ

1
यह मेरे लिए काम नहीं करता है। उदाहरण sudo -H -u buildbot bash -c "echo $HOME"मुझे देता है /home/ubuntu, जो कुछ उबंटू छवियों पर डिफ़ॉल्ट उपयोगकर्ता है।
सेरिन

@Cerin विस्तार को रोकने के लिए एकल उद्धरण का उपयोग करें:sh -c 'echo $HOME'
एंड्रिया कोरबेलिनी

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