Sudo कमांड के लिए रास्ता कैसे सेट करें


37

अगर मैं जारी करता हूं

sudo my-command

लिनक्स कैसे दिखता है my-command?

my-commandमेरे पथ में है। मैं इसे बिना किसी समस्या के लागू कर सकता हूं। हालांकि, जब मैं इसके साथ आह्वान करता हूं, तो मुझे sudoमिलेगा command not found। दिलचस्प, यह पहले कभी अनुभव नहीं है। कैसे दूर करें?

संपादित करें: यह "संभावित डुप्लिकेट" चयनित उत्तर गलत है, ठीक है, कम से कम इस बिंदु पर नहीं। टेर्डन का यह उत्तर सही है।

जवाबों:


48

यह सामान्य रूप से secure_pathविकल्प द्वारा निर्धारित किया जाता है /etc/sudoers। से man sudoers:

 secure_path   Path used for every command run from sudo.  If you don't
               trust the people running sudo to have a sane PATH environ‐
               ment variable you may want to use this.  Another use is if
               you want to have the “root path” be separate from the “user
               path”.  Users in the group specified by the exempt_group
               option are not affected by secure_path.  This option is not
               set by default.

आदेशों को चलाने के लिए जो डिफ़ॉल्ट में नहीं हैं $PATH, आप कर सकते हैं

  1. पूर्ण पथ का उपयोग करें sudo ~/bin/my-command:; या

  2. निर्देशिका युक्त कमांड को इसमें जोड़ें secure_pathsudo visudoसुरक्षित पथ रेखा को चलाएं और संपादित करें:

    Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/youruser/bin/"
    

    फ़ाइल को सहेजें और अगली बार जब आप चलाएंगे sudo, तो निर्देशिका ~/binअपने में होगी $PATH


2
या बस पूरी लाइन बाहर टिप्पणी अगर यह एक उत्पादन मशीन नहीं है और हम परवाह नहीं है। फिर वह यूजर्स के PATH का इस्तेमाल करेगा। यह कहता है कि यह डिफ़ॉल्ट रूप से सेट नहीं है, लेकिन यह हमेशा सच नहीं हो सकता है ...
नागदेव

2

यह मैं एक समाधान के लिए इस्तेमाल किया है:

sudo cp $(which my-command) /usr/bin
...

whichआदेश एक subshell गैर-रूट है कि, तो यह पता लगाने के लिए सक्षम है में निष्पादित किया जाता है my-command, तो, प्रतियां निष्पादन एक रास्ता है कि करने के लिए sudo rootउपयोगकर्ता एक्सेस कर सकते हैं। सुरक्षा के लिए महान नहीं है, लेकिन यह मेरे लिए एक डॉक इमेज चलाने के लिए ठीक था जो कमांड चलने के तुरंत बाद नष्ट हो रहा था।

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