ठीक है, मैंने मैक ओएस एक्स, बीएसडी और लिनक्स के लिए "चामोद" मैन पेजों को फिर से पढ़ा, और कुछ प्रयोग किए। यहाँ मैंने प्रतीकात्मक तरीकों के बारे में सीखा है। यह जटिल हो सकता है, लेकिन यह समझने लायक है:
- सामान्य रूप है क्लॉज [, क्लॉज …] जहां:
- खंड : = [बदसूरत] [+ - =] [rwxXstugo]
- [ugoa] ( जो ) (एकाधिक निर्दिष्ट करें) का अर्थ है उपयोगकर्ता, समूह, अन्य या सभी के लिए अनुमति सेट करें। यदि निर्दिष्ट नहीं है, तो डिफ़ॉल्ट 'a' है, लेकिन umask प्रभाव में है।
- [+ - =] ( क्रिया ) (एक निर्दिष्ट करें) का अर्थ है:
- + का मतलब है कि पहले से लागू अनुमतियों में निर्दिष्ट अनुमतियाँ जोड़ें
- - का अर्थ है पहले से लागू अनुमतियों से निर्दिष्ट अनुमतियाँ हटा दें
- = का अर्थ है अन्य सभी को साफ़ करते हुए अनुमतियों को निर्दिष्ट अनुमतियों पर सेट करना
- [rwxXstugo] ( अनुमति ) (rwxXst के कई निर्दिष्ट या युगो से एक) सेट निर्दिष्ट उपयोगकर्ता (ओं) के रूप में इस के लिए अनुमतियाँ:
- r - पढ़ा
- डब्ल्यू - लिखें
- x - निष्पादित / खोज
- एक्स - निष्पादित / खोज iff निर्देशिका या किसी भी निष्पादित बिट पहले से ही सेट किया गया था।
- s - suid या sgid
- टी - चिपचिपा
- यू - उपयोगकर्ता की अनुमति की प्रतिलिपि बनाएँ
- जी - कॉपी ग्रुप अनुमति
- o - अन्य अनुमति की प्रतिलिपि बनाएँ
उदाहरण के लिए, a+x
हर किसी के द्वारा एक फ़ाइल को निष्पादन योग्य बनाया जाएगा। a+X
हर किसी के द्वारा एक फ़ाइल को निष्पादन योग्य बनाया जाएगा यदि वह किसी के द्वारा निष्पादित किया गया हो।
a+x
हर किसी के द्वारा खोजा जा सकने वाला एक निर्देशिका बनाया जाएगा। a+X
हर किसी के द्वारा खोजा जा सकने वाला एक निर्देशिका भी बनाया जाएगा।
बीएसडी और लिनक्स के बीच महत्वपूर्ण अंतर यह है कि बीएसडी के साथ, निर्धारण फ़ाइल के अनुमतियों के आधार पर किया जाता है, इससे पहले कि चोद को निष्पादित किया गया था। लिनक्स के साथ, निर्धारण + X खंड निष्पादित होने से तुरंत पहले किया जाता है।
तो बीएसडी के साथ, संयोजन a-x,a+X
निष्पादन / खोज की अनुमति को हटा देगा और फिर हर किसी के द्वारा खोज योग्य निर्देशिका बना देगा, और यदि किसी के द्वारा मूल रूप से निष्पादित किया गया था, तो हर किसी के द्वारा एक फ़ाइल को निष्पादन योग्य बनाया जाएगा।
लिनक्स के साथ, a-x,a+X
निष्पादित / खोज अनुमति को हटा देगा और फिर किसी के द्वारा निष्पादन योग्य फ़ाइल को छोड़ते हुए, हर किसी के द्वारा खोज करने योग्य निर्देशिका बना देगा।
यहां एक ठोस उदाहरण है: बीएसडी मशीन पर: एक निर्देशिका, एक निष्पादन योग्य फ़ाइल और एक गैर-निष्पादन योग्य फ़ाइल:
drwxr-x--- 2 falk staff 68 Jul 19 18:01 fee/
-rwxr-x--- 1 falk staff 0 Jul 19 18:01 fie*
-rw-r----- 1 falk staff 0 Jul 19 18:01 foe
निरीक्षण करें कि निर्देशिका और "fie" दोनों उपयोगकर्ता द्वारा निष्पादन योग्य / खोज योग्य हैं, लेकिन दूसरों द्वारा नहीं।
अब हम निष्पादित करते हैं chmod a-x,a+X *
। पहला खंड सभी फ़ाइलों के लिए सभी उपयोगकर्ताओं से निष्पादित / खोज बिट को छीन लेगा, लेकिन दूसरा खंड इसे "शुल्क" और "फी" दोनों के लिए वापस जोड़ देगा। "शुल्क" क्योंकि यह एक निर्देशिका है, और "फी" क्योंकि इसके साथ शुरू करने के लिए कम से कम एक निष्पादन योग्य बिट था।
drwxr-x--x 2 falk staff 68 Jul 19 18:01 fee/
-rwxr-x--x 1 falk staff 0 Jul 19 18:01 fie*
-rw-r----- 1 falk staff 0 Jul 19 18:01 foe
मैं एक ही परिणाम निष्पादित था chmod -x+X
।
निष्कर्ष: जेक गिब का समाधान लिनक्स पर काम करेगा, लेकिन बीएसडी के लिए, आपको दो पास बनाने होंगे।
मैंने एसवीआर 4 या अन्य यूनिक्स वेरिएंट पर इसका परीक्षण नहीं किया।