इस लेख में
chmod क्या है?
chmod (change mode) एक Unix और Linux कमांड है जो फ़ाइल और डायरेक्टरी की अनुमतियाँ सेट करता है। Unix सिस्टम की हर फ़ाइल की तीन अनुमति श्रेणियाँ होती हैं: owner (वह उपयोगकर्ता जिसने फ़ाइल बनाई), group (एक ही समूह के उपयोगकर्ता), और others (बाक़ी सभी)। प्रत्येक श्रेणी को स्वतंत्र रूप से पढ़ने, लिखने और निष्पादित करने की अनुमति दी जा सकती है।
chmod को समझना सिस्टम प्रशासन, वेब सर्वर कॉन्फ़िगरेशन और सुरक्षित फ़ाइल प्रबंधन के लिए ज़रूरी है। ग़लत अनुमतियाँ Linux सर्वरों पर सुरक्षा कमज़ोरियों और एप्लिकेशन त्रुटियों के सबसे आम कारणों में से एक हैं।
chmod अनुमतियाँ कैसे काम करती हैं
अनुमतियों को दो नोटेशन में व्यक्त किया जा सकता है: संख्यात्मक (octal) और प्रतीकात्मक। संख्यात्मक नोटेशन तीन अंकों का उपयोग करता है (जैसे 755), जहाँ प्रत्येक अंक क्रमशः owner, group और others की अनुमतियों को दर्शाता है।
- Read (r = 4) — फ़ाइल सामग्री देखना या डायरेक्टरी की प्रविष्टियाँ सूचीबद्ध करना
- Write (w = 2) — फ़ाइल सामग्री बदलना या किसी डायरेक्टरी में फ़ाइलें जोड़ना/हटाना
- Execute (x = 1) — किसी फ़ाइल को प्रोग्राम के रूप में चलाना या cd से किसी डायरेक्टरी में प्रवेश करना
प्रत्येक अंक उसकी अनुमतियों का योग होता है: 7 = read + write + execute (4+2+1), 6 = read + write (4+2), 5 = read + execute (4+1), 4 = केवल read। प्रतीकात्मक नोटेशन अक्षरों का उपयोग करता है: u (user/owner), g (group), o (others), जिनके साथ अनुमतियाँ जोड़ने या हटाने के लिए +/- होता है (जैसे chmod u+x file)।
निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं
chmod अनुमतियाँ गणना करें →आम अनुमति मान
ये सबसे अधिक इस्तेमाल किए जाने वाले chmod मान और उनके सामान्य अनुप्रयोग हैं।
- 755 (rwxr-xr-x) — निष्पादन योग्य फ़ाइलों और डायरेक्टरियों के लिए मानक; owner के पास पूरी पहुँच होती है, बाक़ी सभी पढ़ और निष्पादित कर सकते हैं
- 644 (rw-r--r--) — सामान्य फ़ाइलों के लिए मानक; owner पढ़ और लिख सकता है, बाक़ी सभी केवल पढ़ सकते हैं
- 700 (rwx------) — निजी डायरेक्टरी या स्क्रिप्ट; केवल owner के पास कोई पहुँच होती है
- 600 (rw-------) — निजी फ़ाइल जैसे SSH की या गोपनीय जानकारी वाली कॉन्फ़िगरेशन फ़ाइलें; केवल owner पढ़ और लिख सकता है
- 777 (rwxrwxrwx) — सभी के लिए पूरी पहुँच; लगभग कभी उपयुक्त नहीं होता और प्रोडक्शन सिस्टम पर सुरक्षा जोखिम है
सुरक्षा निहितार्थ
least privilege का सिद्धांत सीधे फ़ाइल अनुमतियों पर लागू होता है: किसी फ़ाइल या डायरेक्टरी के सही ढंग से काम करने के लिए केवल न्यूनतम आवश्यक अनुमतियाँ दें। दुनिया-भर के लिए लिखने योग्य फ़ाइलें (others के लिए 7 या 6 पर समाप्त होने वाली अनुमतियाँ) एक आम हमले का ज़रिया हैं क्योंकि सिस्टम का कोई भी उपयोगकर्ता उन्हें बदल सकता है।
विशेष अनुमति बिट एक और परत जोड़ते हैं: SUID (Set User ID) किसी प्रोग्राम को फ़ाइल owner के रूप में चलाता है, SGID (Set Group ID) उसे फ़ाइल समूह के रूप में चलाता है, और डायरेक्टरियों पर sticky bit उपयोगकर्ताओं को उन फ़ाइलों को हटाने से रोकता है जिनके वे owner नहीं हैं। निष्पादन योग्य फ़ाइलों पर ग़लत कॉन्फ़िगर किए गए SUID बिट privilege escalation कमज़ोरियों का कारण बन सकते हैं।
सुझाव और सर्वोत्तम प्रथाएँ
अपने सिस्टम पर सुरक्षित और कार्यात्मक फ़ाइल अनुमतियाँ बनाए रखने के लिए इन दिशानिर्देशों का पालन करें।
- डायरेक्टरियों को execute अनुमति की ज़रूरत होती है — इसके बिना, उपयोगकर्ता डायरेक्टरी में cd नहीं कर सकते या उसके अंदर की फ़ाइलों तक नहीं पहुँच सकते, भले ही फ़ाइलें ख़ुद पठनीय हों
- रिकर्सिव chmod का सावधानी से उपयोग करें — किसी डायरेक्टरी पर chmod -R 755 सभी फ़ाइलों को निष्पादन योग्य बना देता है, जो शायद ही कभी सही होता है; फ़ाइलों और डायरेक्टरियों को अलग-अलग सेट करने के लिए find के साथ -type f और -type d का उपयोग करें
- umask डिफ़ॉल्ट सेट करें — umask कमांड नई बनाई गई फ़ाइलों के लिए डिफ़ॉल्ट अनुमतियाँ नियंत्रित करता है; 022 का umask फ़ाइलों को 644 और डायरेक्टरियों को 755 के रूप में बनाता है, जो अधिकांश सर्वर वातावरणों के लिए उपयुक्त है
अक्सर पूछे जाने वाले प्रश्न
755 और 777 में क्या अंतर है?
755 के साथ, owner के पास पूरा नियंत्रण होता है (read, write, execute) जबकि group और others केवल पढ़ और निष्पादित कर सकते हैं। 777 के साथ, सभी के पास पूरा नियंत्रण होता है, जिसमें फ़ाइल को बदलने या हटाने की क्षमता भी शामिल है। 777 का उपयोग लगभग कभी ज़रूरी नहीं होता और यह एक बड़ा सुरक्षा जोखिम पैदा करता है — इसका मतलब है कि सिस्टम का कोई भी उपयोगकर्ता आपकी फ़ाइलों को बदल सकता है।
डायरेक्टरियों को execute अनुमति की ज़रूरत क्यों होती है?
किसी डायरेक्टरी पर execute बिट उसे पार करने की क्षमता को नियंत्रित करता है। execute अनुमति के बिना, कोई उपयोगकर्ता डायरेक्टरी में cd नहीं कर सकता, उसकी सामग्री पूरी तरह सूचीबद्ध नहीं कर सकता, या उसके अंदर की किसी भी फ़ाइल तक नहीं पहुँच सकता — भले ही फ़ाइलों के पास ख़ुद read अनुमति हो। इसीलिए डायरेक्टरियों में आमतौर पर 755 होता है जबकि फ़ाइलों में 644।
नई फ़ाइलों के लिए डिफ़ॉल्ट अनुमतियाँ क्या होती हैं?
डिफ़ॉल्ट अनुमतियाँ umask सेटिंग पर निर्भर करती हैं। 022 के आम umask के साथ, नई फ़ाइलें 644 (rw-r--r--) के रूप में और नई डायरेक्टरियाँ 755 (rwxr-xr-x) के रूप में बनती हैं। umask फ़ाइलों के लिए सिस्टम अधिकतम 666 और डायरेक्टरियों के लिए 777 में से अनुमतियाँ घटाता है।