"निष्पादित" अनुमति क्या करती है?


31

मैं हैरान हूं कि मैं अभी भी लिनक्स में "एक्जेक्यूट" की अनुमति को नहीं समझता हूं।

तीन अनुमति हैं - पढ़ें, लिखें, और निष्पादित करें। मैं समझता हूं कि वस्तुतः पढ़ो और लिखो, लेकिन अमल क्या करता है?

मान लीजिए कि मेरे पास example.phpनिष्पादन की अनुमति है। मैं क्या कर सकता हूँ example.php?

जवाबों:


32

मूल रूप से इसका मतलब है कि आप फ़ाइल में कोड को चलाने के लिए ऑपरेटिंग सिस्टम को बता सकते हैं। उदाहरण के लिए, यदि फ़ाइल एक द्विआधारी निष्पादन योग्य थी, तो लेखन पहुंच आपको इसे संशोधित करने की अनुमति देगी, पढ़ने की पहुंच आपको इसे देखने की अनुमति देगी, लेकिन अनुमतियों को निष्पादित किए बिना आप कार्यक्रम को चलाने में सक्षम नहीं होंगे। एक स्क्रिप्ट के मामले में, इसकी थोड़ी अधिक शिकायत है, क्योंकि आपको आवश्यक रूप से कार्यक्रम को 'रन' करने की आवश्यकता नहीं है, आप इसकी सामग्री को केवल एक दुभाषिया में पढ़ सकते हैं, जिसमें खुद को निष्पादित privelige है, लेकिन आपको निष्पादन की आवश्यकता नहीं है स्क्रिप्ट पर ही अनुमति।

लिनक्स में कुछ स्क्रिप्ट स्वयं निष्पादन योग्य हैं, आप अक्सर शीर्ष पर एक पंक्ति देखेंगे

#! / बिन / बैश या

#! / Bin / अजगर

वह लाइन कर्नेल को बताती है कि संबंधित प्रोग्राम को कॉल करके फ़ाइल को निष्पादित किया जा सकता है (और सिर्फ टेक्स्ट नहीं है)। तब आप अपनी स्क्रिप्ट जैसे चला सकते हैं

./script

करने के बजाय

अजगर ./script


गैर-टेक्स्ट-आधारित फ़िलिप जैसे उदाहरणों के लिए इसका क्या अर्थ है। .pngया .avi?
आयन जूल

1
मूल रूप से एक ही है, फ़ाइल एक्सटेंशन मायने नहीं रखता है। यदि आपके पास #!/bin/bashआपकी .aviफ़ाइल की शुरुआत में है , तो इसे बैश के रूप में निष्पादित किया जाएगा। यदि यह एक वास्तविक एवीआई प्रारूप है, तो आप शायद इसे नहीं चला पाएंगे क्योंकि इसे कमांड के रूप में व्याख्या करना समझ में नहीं आएगा और विफल हो जाएगा।
Mifeet

क्या #!वास्तव में कर्नेल द्वारा व्याख्या की गई है?
मास्टरएक्सिलो

17

"निष्पादित" उपयोगकर्ता को निष्पादनयोग्य निष्पादित करने की अनुमति देता है। निर्देशिका के लिए यह सीडी कमांड का उपयोग करके निर्देशिका में प्रवेश करने की अनुमति है।


1
निर्देशिका भाग तक पहुँच बहुत बड़ी है। आप कभी भी यह अनुमान नहीं लगाएंगे कि सिर्फ मोड के नाम से।
प्रिमिटिवनोम

2

व्यावहारिक उद्देश्यों के लिए, पढ़ने की अनुमति का अर्थ निष्पादन की क्षमता है।

हालाँकि विपरीत सत्य नहीं है; पढ़ने की अनुमति दिए बिना कोड निष्पादित करने की अनुमति देने की क्षमता में कुछ मूल्य है।


यह वास्तव में बहुत मायने रखता है।
मास्टरएक्सिलो

मुझे READ / EXECUTE से भ्रम था, और ऐसे उत्तर की उम्मीद थी। शुक्रिया
टी। टोडुआ

2

यह GUI या कमांड लाइन से ऐप चलाने के लिए है। "सामान्य" php उपयोग (वेबसर्वर के माध्यम से) के लिए, जो कुछ भी नहीं बदलता है। संक्षेप में, यह कॉन्फ़िगरेशन पर निर्भर करता है, लेकिन अधिकांश सामान्य मामलों में आपको ब्राउज़र के माध्यम से अपने php वेबपेज को लोड करने की अनुमति देने के लिए + x अनुमति की आवश्यकता नहीं होती है।

कमांड लाइन से चलाने के लिए आपको चाहिए:

  • #!/usr/bin/phpस्क्रिप्ट की शुरुआत में जोड़ें
  • + x अनुमति जोड़ें
  • आपकी स्क्रिप्ट आपके निष्पादन योग्य खोज पथ ($ PATH पर्यावरण चर) में होनी चाहिए या आपको उस निर्देशिका को निर्दिष्ट करना होगा जो यह आपके स्क्रिप्ट नाम से पहले है। यह एक पूर्ण पथनाम हो सकता है, जैसे /etc/xdg/fooया /home/fred/bar, या एक रिश्तेदार निर्देशिका, जैसे dir1/prog1या ./prog2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.