मुझे सूडो के साथ क्या माहौल मिलता है?


15

जब मैं सूडो चलाता हूं, तो मेरे वातावरण का वास्तव में क्या होता है?

जब मैं दौड़ता हूं sudo command, तो यह मेरे या रूट के वातावरण को देखने के लिए प्रतीत नहीं होता है। उदाहरण के लिए, दोनों के लिए मेरा पथ शामिल है /usr/local/bin, लेकिन अगर मैं एक कार्यक्रम को पूर्ण पथ के बिना चलाने का प्रयास करता हूं, तो यह विफल हो जाता है।

मैंने सोचा कि सूडो जड़ के रूप में भागे, और इसलिए जड़ का वातावरण मिला। क्या कोई अलग तरीका है जो मूल या मेरे सामान्य उपयोगकर्ता की तुलना में sudo के तहत बैश करता है?

संपादित करें:

मैं sudo -iहाल ही में उपयोग कर रहा हूं , लेकिन हाल ही में यह समस्या पैदा कर रहा है क्योंकि मेरी वर्तमान कार्यशील निर्देशिका सेट हो गई है /root। यह अपेक्षा के अनुरूप है (सॉर्ट), लेकिन मुझे अभी भी समझ में नहीं आया है कि सूदो मेरे निष्पादकों को क्यों नहीं पहचान रहा है /usr/local/bin

संपादित करें:

मैं फेडोरा 15 चला रहा हूं।


आप किस ओएस का उपयोग कर रहे हैं (यदि लिनक्स, क्या वितरण)? कॉन्फ़िगर करने के लिए कई तरीके हैं (और) PATH, और कभी-कभी यह पता लगाना आसान नहीं है कि इसे अंतिम कौन ओवरराइड करता है। यह कुछ सिस्टम सेटिंग (उदाहरण के लिए PAM), sudo ही, या बाद की प्रोफ़ाइल स्क्रिप्ट हो सकती है।
गिल्स एसओ- बुराई को रोकें '

@ गिल्स- अच्छी बात है। मैंने अपना OS जोड़ा। मैंने केवल फेडोरा पर ही ध्यान दिया है (मैं उबंटू का उपयोग करता था), लेकिन मैंने सोचा कि ऐसा इसलिए था क्योंकि उन्होंने बहुत सारे सुविधा सेटअप नहीं जोड़े थे।
बीटगैमिट

जवाबों:


6

मुझे फेडोरा पर चूक के बारे में नहीं पता है, लेकिन डिबियन sudoडिफॉल्ट पर secure_pathडिफ़ॉल्ट मान के साथ विकल्प का उपयोग करने के लिए /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

इसका मतलब यह है कि आपके द्वारा उपयोग किए जाने पर हर बार उस मूल्य में परिवर्तन किया जाता है sudo; लेकिन जब आप उपयोग करते हैं sudo -i, तो रूट को उसके बाद रूट उपयोगकर्ता की RC फ़ाइलों द्वारा बदल दिया जाता है।


मुझे secure_pathविकल्प के बारे में पता नहीं था । /usr/local/binमेरे इंस्टॉल में डिफ़ॉल्ट शामिल नहीं था । धन्यवाद, यह वास्तव में स्पष्ट सामान में मदद करता है!
बीटगैमिट

4

आप इस तरह की चीजों के साथ काफी आसान की जाँच कर सकते हैं

से आउटपुट की तुलना करें

sudo env 
env

और जैसी बातें

sudo whoami 
whoami

इस तरह आप यह पता लगाने की कोशिश कर सकते हैं कि आपके सेटअप में क्या कमी है।


कूल, उस बारे में नहीं जानता था। वैसे भी, /usr/local/binमेरे sudo env में नहीं है, लेकिन यह मेरे root env और user env में है। ऐसा क्यों है?
बीटगैमिट

सुदो हयामी वापसी root, उम्मीद की तरह। मेरे sudo env को मेरे मूल env से अलग करने के कारण क्या हो सकता है?
बीट

पता नहीं है, लेकिन कहीं न कहीं कुछ गायब सेटअप होना चाहिए, / usr / स्थानीय / बिन आमतौर पर शामिल है। हो सकता है कि आपने कुछ configfile में गलती से $ PATH env को मंजूरी दे दी हो?
जोहान

क्या sudo source /root/.bashrc? यही वह जगह है जहां मैं /usr/local/binरूट के पथ में जोड़ता हूं (मुझे मैन्युअल रूप से ऐसा करना पड़ा, दुर्भाग्य से)?
बीट

मुझे लगता है कि आपको अपने गोले वैश्विक विन्यास को संशोधित करना चाहिए और देखना चाहिए कि क्या होता है। यदि आप बैश चल रहे हैं तो यह कुछ इस तरह होगा /etc/bash.bashrc
Johan

2

sudo -iआदेश अनुकरण प्रारंभिक लॉगिन। मेरे डेबियन सिस्टम पर, यह भी कहा गया है कि:

इसका मतलब यह है कि लॉगिन-विशिष्ट संसाधन फ़ाइलें जैसे कि .profile या .login शेल द्वारा पढ़ी जाएंगी। यदि कोई आदेश निर्दिष्ट किया जाता है, तो इसे निष्पादन के लिए शेल में दिया जाता है। अन्यथा, एक इंटरैक्टिव शेल निष्पादित किया जाता है। शेल चलाने से पहले sudo उस उपयोगकर्ता की होम निर्देशिका को बदलने का प्रयास करता है। यह गृह, मेल, शेल, USER, LOGNAME और PATH की स्थापना के साथ-साथ Linux और AIX सिस्टम की सामग्री / वातावरण, को DISPLAY और TERM को अपरिवर्तित छोड़ते हुए पर्यावरण को आरंभ करता है। अन्य सभी पर्यावरण चर हटा दिए जाते हैं।


0

आप समायोजित कर सकते हैं sudoके env_keepशामिल करने के लिए पैरामीटर PATH, हालांकि आप मन में है कि ऐसा करने का सुरक्षा निहितार्थ रखना चाहिए।

visudo

... आपका शुभारंभ करेंगे $EDITOR, फिर आप Defaults env_keep =... के रूप में उपयुक्त परिवर्तन कर सकते हैं ।

इसके अलावा, आप फ़ाइलों में जोड़कर सिस्टम के पथ पर usr / usr / लोकल / बिन जोड़ सकते हैं /etc/profile.d

उदाहरण के लिए:

cat <<EOF > /etc/profile.d/tjameson.sh
export PATH=$PATH:/usr/local/bin
EOF

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