शेल स्क्रिप्ट को निष्पादित करने के लिए पढ़ने की अनुमति की आवश्यकता होती है, लेकिन बाइनरी फाइलें नहीं होती हैं:
$ cat hello.cpp
#include<iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission
एक फ़ाइल की सामग्री को प्रदर्शित करना और उन्हें निष्पादित करना दो अलग-अलग चीजें हैं। शेल स्क्रिप्ट के साथ, ये चीजें संबंधित हैं क्योंकि उन्हें एक नए शेल (या वर्तमान एक) में "पढ़ने" द्वारा "निष्पादित" किया जाता है, यदि आप सरलीकरण को माफ कर देंगे। यही कारण है कि आपको उन्हें पढ़ने में सक्षम होने की आवश्यकता है। बायनेरिज़ उस तंत्र का उपयोग नहीं करते हैं।
निर्देशिकाओं के लिए, निष्पादन की अनुमति थोड़ी अलग है; इसका मतलब है कि आप फ़ाइलों को कर सकते हैं के भीतर उस निर्देशिका (जैसे पढ़ने के लिए या उन्हें अमल)। तो मान लीजिए कि आपके पास ऐसे उपकरण हैं, /tools
जिनमें आप चाहते हैं कि लोग उपयोग कर सकें, लेकिन केवल अगर वे उनके बारे में जानते हैं। chmod 711 /tools
। तब निष्पादन योग्य चीजों को /tools
स्पष्ट रूप से चलाया जा सकता है (उदा /tools/mytool
), लेकिन ls /tools/
इनकार किया जाएगा। इसी तरह, दस्तावेजों को संग्रहीत किया /private-docs
जा सकता है जिसमें पढ़ा जा सकता है यदि और केवल अगर फ़ाइल नाम ज्ञात हैं।