सूडो पथ में सहजीवन से जुड़े निष्पादनयोग्य नहीं देख सकते हैं


0

CentOS 7 पर, मैंने कुछ निष्पादनों को स्थापित किया /opt/app-version/bin/executable। उन निष्पादनों में निम्नलिखित अनुमतियाँ हैं:

rwxrwxr-x. 500 500

मार्ग में प्रत्येक निर्देशिका का स्वामित्व /opt/app-version/bin/है - 500 500संदर्भ /opt, जो है root root

मेरा पहला सवाल: यह 500 500व्यवसाय क्या है ? यह देखते हुए कि मैंने sudoमालिक और समूह का उपयोग करके , निष्पादन योग्य वस्तुओं को स्थापित नहीं किया है root?

मैंने निष्पादन योग्यों को प्रतीकात्मक लिंक बनाने के लिए निम्नलिखित कमांड को रूट के रूप में चलाया है /usr/local/bin/:

ln /opt/app-version/bin/executable /usr/local/bin/executable --symbolic

मैं executableकमांड लाइन से एक नियमित उपयोगकर्ता के रूप में चलाने में सक्षम हूं , लेकिन एक नियमित उपयोगकर्ता के रूप में उपयोग नहीं कर रहा हूं sudo

रनिंग sudo executableरिटर्न sh: executable: command not found

चल रहा है sudo echo $PATHपता चलता है कि /usr/local/bin/में है $PATHsudo वातावरण के लिए। (या यह करता है? क्या मैं $PATHसुपर उपयोगकर्ता पर्यावरण के लिए सामग्री देख रहा हूं , या उपयोगकर्ता $PATHके पर्यावरण के लिए जिसे कहा जाता है sudo? क्या CentOS कमांड के साथ चलने के लिए एक नया वातावरण बनाता है sudo, या क्या यह केवल कॉलर के वातावरण में कमांड चलाता है? )

रनिंग sudo ls -la /usr/local/bin/executableके लिए एक सूची रिटर्न executableमें /usr/local/bin/स्वामित्व के साथ lrwxrwxrwx. 1 root root। (क्या ln --symbolicवास्तव में डिफ़ॉल्ट रूप से वैश्विक रूप से संपादन योग्य लिंक बनाता है? यह नहीं है - एक भयानक विचार?) मेरी समझ यह है कि इस शो को चलाने में सक्षम sudo होना चाहिए executable

मैं क्या खो रहा हूँ?

जवाबों:


0

पहली बार में 500 500, यदि आप किसी tarसंग्रह (अन्य लोगों के बीच) से पुनर्स्थापित करते हैं , तो स्वामी और समूह को उस सिस्टम से संरक्षित किया जाएगा जहां संग्रह बनाया गया था: मैं अनुमान लगा रहा हूं कि इंस्टॉलर ऐसा करता है, और यदि बहाल उपयोगकर्ता या समूह नहीं करता है आपके सिस्टम पर मौजूद संख्यात्मक मान प्रदर्शित होता है।

अब देखते हुए PATH, मैंने इसे उबंटू पर पुन: पेश किया है, और ऐसा लगता है कि sudoसंशोधित करता है PATH: आपके आदेश sudo echo $PATHमें PATHचर को कॉल करने के बाद मूल शेल में विस्तारित किया गया था sudo/etc/sudoersएक प्रविष्टि के साथ एक फ़ाइल है "defaults secure_path="...", और यह प्रतीत होता है कि क्या उपयोग किया जाता है।

यदि आप उपयोग करते sudo sh -c 'echo $PATH'हैं तो आपको उपयोग किए जाने का एक बेहतर विचार मिलेगा PATH। ध्यान दें कि मैं जानबूझ कर इस्तेमाल किया shबजाय bash, आदेश initialisation फ़ाइलें, चीजों को बदल सकते हैं, जिनमें से कुछ से बचने के लिए, हालांकि shपाठ्यक्रम की इच्छा का अपना कुछ नहीं है।

उबंटू पर, secure_pathलाइन शामिल है /user/local/bin, लेकिन CentOS अलग हो सकता है (दोनों डेबियन से प्राप्त होते हैं, लेकिन man sudoersSELinux के अनुसार कुछ प्रविष्टियों को ओवरराइड कर सकते हैं)। जहाँ तक मैं देख सकता हूँ आपके पास कम से कम चार विकल्प हैं: -

  • secure_path`/ Usr / स्थानीय / बिन 'को शामिल करने के लिए संशोधित करें ।
  • में परिभाषित निर्देशिकाओं में से एक में लिंक रखो secure_path
  • के su -c "{command} {parameters}"बजाय का उपयोग करें sudo {command} {parameters}
  • मूल शेल के समान प्रारंभिक के साथ sudo -sएक रूट प्राप्त करने के लिए उपयोग करें , फिर वहां से अपने निष्पादन योग्य को कॉल करें और बाद में बाहर निकलें।bashPATH

मैं भी चर्चा और कुछ अन्य संभावित समाधानों का एक बहुत पाया यहाँ


StackExchange में कोई निजी संदेश भेजने की सुविधा नहीं है, जिससे मैं परिचित हूं, इसलिए - मैं इसे अभी यहां पोस्ट करूंगा: अभी-अभी आपके उपयोगकर्ता प्रोफ़ाइल के माध्यम से पढ़ा गया है, मैंने सोचा कि मेरे जैसे लोगों को शायद अक्सर इतना नहीं बताया जाता है कि लोग कितने हैं खुद की तरह आप पेशेवर संदर्भों में आप से टकराते हैं। आपके अनुभव और समर्थन के लिए आपको सलाम! अगर मैं ला के बजाय यूके में था, तो पहला राउंड मुझ पर होगा। सलाम! (और धन्यवाद)
StudentsTea
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.