RHEL पर बढ़ते निर्देशिकाओं के लिए NOEXEC ध्वज का क्या अर्थ है?


11

मैं बढ़ते समय NOEXEC ध्वज को समझने की कोशिश कर रहा हूं।

मैं / elmp मशीन पर एक tmp निर्देशिका के भीतर एक निष्पादन मुद्दा है कि मैं atm का उपयोग नहीं कर सकते हैं जहां / tmp निर्देशिका '/' की तुलना में एक अलग ड्राइव पर मुहिम शुरू की है और NOEXEC मौजूद है। मैं अपनी मशीन पर इस परिदृश्य को आज़माना चाहता था, लेकिन मेरे पास दूसरी हार्ड ड्राइव नहीं है। मैंने निम्नलिखित कमांड करने की कोशिश की:

mount --bind /test1 /test2

मैंने तब bindझंडे को हटा दिया और NOEXEC/ etc / fstab में जोड़ दिया । फिर, मैंने एक फाइल बनाई / test2 जिसे test.sh कहा गया है, जहाँ यह सिर्फ 'हैलो वर्ल्ड' के रूप में है। मैं इसे चलाने और चलाने की कोशिश करता हूं और इसने कहा 'अनुमति से वंचित'। मैं तब भागा chmod 777 test.shऔर ठीक ठीक फ़ाइल निष्पादित करने में सक्षम था। मुझे लगा कि NOEXEC ध्वज को मुझे कुछ भी निष्पादित करने की अनुमति नहीं देनी चाहिए?

क्या mount --bind /test1 /test2पूरी तरह से अलग भौतिक ड्राइव से बढ़ते हुए समान नहीं है? जैसे / टेस्ट 1 और / टेस्ट 2 विभिन्न ड्राइव पर हैं?


मुझे संदेह है कि आप बाइंड माउंट की कुछ ख़ासियत का शिकार हो सकते हैं। इस जवाब को देखें ।
कामिल मैकियोरोस्की

जवाबों:


7

विकल्प ' mountकमांड में NOEXEC' ध्वज माउंटेड फ़ाइल सिस्टम 1 में निष्पादन योग्य बायनेरिज़ के निष्पादन की अनुमति नहीं देता है । हालाँकि, जब एक स्क्रिप्ट (एक पाठ फ़ाइल जो कि #!शेक -बैंग लाइन से शुरू होती है; यानी, एक लाइन जो शुरू होती है ) कुछ गोले (बैश) को दी जाती है, यह उस लाइन (जैसे, /usr/bin/perl) पर नामित निष्पादन योग्य को चलाएगी और पास करेगी पहले तर्क के रूप में शेल स्क्रिप्ट का पथ। वास्तविक दुभाषिया उस माउंटपॉइंट पर नहीं हो सकता है।
__________
1mount आदेश आम तौर पर एक mounts फाइल सिस्टम । ( bindसंभवतः , लूप-बैक या माउंट इस सामान्यता का अपवाद माना जा सकता है।) कुछ मामलों में (जैसे /tmp), इस फ़ाइल सिस्टम में केवल एक निर्देशिका होगी।


तो, हालांकि sh फाइल / test2 में रहती है, यह / bin / sh, not / test2 में निष्पादित हो रही है? दूसरी मशीन पर, एक जावा प्रक्रिया है जो शेल स्क्रिप्ट को / tmp निर्देशिका में लिख रही है और फिर उन्हें निष्पादित कर रही है। मुझे लगता है कि मुझे याद है कि यह जिस शेल स्क्रिप्ट को बना रहा है #!/bin/shवह सबसे ऊपर है। मुझे नहीं पता कि शेल स्क्रिप्ट को जावा और संदर्भ / बिन / श के माध्यम से जाने के अलावा कैसे निष्पादित किया जा रहा है। यदि यह संदर्भित कर रहा है / बिन / श और बिन निर्देशिका ने विशेषाधिकारों को निष्पादित किया है, तो मेरे परीक्षण में शेल स्क्रिप्ट को निष्पादित क्यों नहीं किया जाएगा?
user972276

यह सब शेल / प्रोग्राम कॉलिंग तक है, शेल स्क्रिप्ट ईएलएफ नहीं हैं और इसे सीधे निष्पादित नहीं किया जा सकता है, हालांकि कुछ गोले, एफएस पर एक स्क्रिप्ट की अनुमति नहीं देंगे जो कि NOEXEC को चलाने के लिए माउंट किया गया है, वे बस मर जाएंगे। मुझे यकीन नहीं है कि इस मामले में क्या / बिन / श का व्यवहार माना जाता है। (खासकर जब से मैं नहीं जानता कि आप किसका उपयोग कर रहे हैं, कुछ स्वाद हैं)।
KJ4IPS

यह सोचने के लिए आओ, जब आप शेल का उपयोग करते हैं, तो सिस्टम # को नोटिस करता है! लाइन, और विनियोजित इंटरप्रेन्योर (/ बिन / बैश /tmp/file.sh) को कॉल करता है, लेकिन अगर जावा बिट सिर्फ कॉल कर रहा है (/tmp/file.sh), जो काम नहीं कर रहा है।
KJ4IPS

जावा उदाहरण / tmp निर्देशिका में नहीं है और शेल स्क्रिप्ट को निष्पादित करने के लिए दुभाषिया का उपयोग करने की आवश्यकता होगी? जब तक कि जावा ने कार्यक्षमता में निर्मित नहीं किया है, जिसका अर्थ है कि निष्पादन अभी भी / tmp निर्देशिका में नहीं होगा।
user972276

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