मैं कुछ कमांड क्यों नहीं कर सकता? (जैसे, विम)


16

मैं अपने दोस्तों के सर्वर पर सूडो एक्सेस कर रहा हूं, सेंटो-6.3 चला रहा हूं, लेकिन जब मैं कुछ कमांड चलाने की कोशिश करता हूं तो मुझे sudo vim /var/www/html/index.htmlएक त्रुटि मिलती है sudo: vim: command not found, हालांकि, मैं दौड़ सकता हूं sudo suऔर फिर vim /var/www/html/index.htmlयह उम्मीद के मुताबिक काम करता है।

echo $PATHऔर sudo echo $PATHदोनों उपज:

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jared/bin

sudo which vim हालांकि पैदावार:

which: no vim in (/sbin:/bin:/usr/sbin:/usr/bin)

मैंने जोड़ने की कोशिश की है

export PATH=$PATH:/usr/local/bin

करने के लिए /root/.bashrcउपयोग करते समय जो के रूप में समस्या का समाधान हो sudo suलेकिन सिर्फ नहीं sudo <command>

मुझे कैसे sudo <command>काम करना है?


क्या आपने उस उपयोगकर्ता को Centos OS में sudoers में जोड़ा है?
AAvvz

जवाबों:


18

जब चल रहा है sudo, सभी गैर-श्वेतसूची मानों के वातावरण को खाली करने के लिए और पाथ चर को एक स्वच्छता मूल्य पर रीसेट करने के लिए कई सिस्टम कॉन्फ़िगर किए गए हैं।

आप के रूप में पूर्व Defaults env_resetऔर कई Defaults env_keep += "SOME_VARIABLE_NAME"में मिल जाएगा /etc/sudoers। उत्तरार्द्ध "सुरक्षित" PATHओवरराइड निर्दिष्ट किया गया है Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin- sudoआईएनजी जब इस व्यवहार को हटाने के लिए इस लाइन को हटा दें ।


कैसे जो वातावरण चर संभाला छपा है जब आप चलाया जाता है  sudo -Vके रूप में root


यदि आप इन चूक से छुटकारा नहीं चाहते हैं, तो आप हमेशा उनके पूर्ण पथ ( sudo /usr/local/bin/vim) का उपयोग करके कार्यक्रम निर्दिष्ट कर सकते हैं ।

वैकल्पिक रूप से, आप अपने खाते को फ़ाइल SETENVमें अनुमति दे सकते हैं sudoers, उदाहरण के लिए:

%wheel  ALL=(ALL)       SETENV: ALL

यह आपको पर्यावरण संबंधी चूक को इस तरह से ओवरराइड करने की अनुमति देता है: sudo PATH=$PATH which vimचूंकि कमांड निष्पादित होने से पहले आपके शेल द्वारा चर को अलग किया जाता है, जिसके परिणामस्वरूप विरासत में मिला है PATH(जिसमें संभवतः शामिल नहीं होगा /sbin)।


धन्यवाद। मैं डेनिस के काम का उपयोग तब तक करूँगा जब तक कि मुझे sudoers फ़ाइल की प्रशंसा करने के लिए स्वामी न मिल जाए।
JaredMcAteer

6
sudo echo $PATH

आप जो सोचते हैं वह नहीं करते हैं। कमांड को निष्पादित करने से पहले$PATH (आपके) शेल द्वारा प्रतिस्थापित किया जाता है ।

इच्छित व्यवहार को पूरा करने के लिए, आप उपयोग कर सकते हैं sudo -i

से आदमी sudo :

-मैं आदेश]

मैं ( अनुकरण प्रारंभिक लॉगिन ) विकल्प खोल में निर्दिष्ट चलाता पासवर्ड एक लॉगिन शेल के रूप में लक्ष्य उपयोगकर्ता की (5) प्रवेश। इसका मतलब यह है कि लॉगिन-विशिष्ट संसाधन फ़ाइलें जैसे शेल द्वारा पढ़ी जाएंगी .profileया .loginपढ़ी जाएंगी। यदि कोई कमांड निर्दिष्ट है, तो इसे निष्पादन के लिए शेल में पास किया जाता है।


1
यह एक उपयुक्त समाधान है जब तक कि मैं sudoers फ़ाइल को समायोजित करने के लिए स्वामी को प्राप्त नहीं कर सकता।
JaredMcAteer

1

मुझे कैसे sudo <command>काम करना है?

जब तक आप पथ के साथ समस्या का समाधान नहीं करते तब तक एक पूर्ण पथनाम का उपयोग करें

  sudo /usr/local/bin/vim /var/www/html/index.html

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