डेबियन और उबंटू दोनों में एक /etc/sudoers
फ़ाइल होती है जिसमें Defaults env_reset
पर्यावरण चर होता है।
हालांकि, लक्ष्य उपयोगकर्ता के घर पर इसे रीसेट करने के लिए $ HOME को नहीं छूने env_reset
से व्यवहार बदल गया था ।
उबंटू ने sudo
पिछले व्यवहार को बनाए रखने के लिए अपने संस्करण को पैच करने का फैसला किया :
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140
उबंटू में, लक्ष्य उपयोगकर्ता के लिए $ HOME पर्यावरण चर को रीसेट करने के लिए, किसी को Defaults always_set_home
या तो सेट करना होगा Defaults set_home
( या जिस स्थिति में केवल sudo -s
घर को अपडेट किया जाएगा) /etc/sudoers
।
उबंटू ट्रैकर के इस बग में सुडो में $ HOME सेट नहीं करने पर कुछ और तर्क दिए गए हैं:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1373495
देखें टिप्पणी # 4:
यदि घर को हटा दिया जाता है, तो जैसे विम, बैश, आदि, उपयोगकर्ता के ~ / .vimrc, ~ / .bashrc, आदि के बजाय /root/.vimrc, /root/.bashrc, आदि का उपयोग करेगा, जबकि यह एक बुरा विचार है। सुडो के माध्यम से एक्स क्लाइंट को चलाने के लिए, वे भी संभवत: कॉन्फ़िगरेशन फ़ाइलों के लिए गलत स्थानों में दिखेंगे, और एक मौका है कि X11 क्लाइंट X11 सर्वर से कनेक्ट करने में सक्षम नहीं हो सकते हैं यदि वे गलत .Xauthority फ़ाइल के उद्देश्य से हैं।
यह उबंटू डेवलपर्स द्वारा एक सचेत निर्णय है।
इस उत्तर में sudoers विकल्पों पर अधिक विवरण हैं जैसे always_set_home
:
https://unix.stackexchange.com/a/91572/284444
आपके प्रश्न में एक दूसरा मुद्दा है, sudo echo $HOME
जो अभी भी उपयोगकर्ता के घर को डेबियन में भी प्रदर्शित करता है।
ऐसा इसलिए होता है क्योंकि कमांड चलाने से $HOME
पहले शेल का विस्तार होता है sudo
।
तो यह:
$ sudo echo $HOME
पहले शेल द्वारा विस्तारित किया गया है:
$ sudo echo /home/user
और फिर sudo echo /home/user
रूट के रूप में निष्पादित ...
यह अंतर भी प्रदर्शित करना चाहिए:
$ sudo bash -c 'echo $HOME'
/root
या एक पूर्ण शैल प्राप्त करें और वहां पर्यावरण चर देखें:
$ sudo -s
# echo $HOME
/root