लिनक्स/यूनिक्स में फ़ाइल अनुमतियाँ: कैसे पढ़ें, लिखें और बदलें

⚡ स्मार्ट सारांश

लिनक्स और यूनिक्स में फ़ाइल अनुमतियाँ यह नियंत्रित करती हैं कि कौन प्रत्येक फ़ाइल को पढ़, लिख और निष्पादित कर सकता है, जो दो स्तरों के माध्यम से एक बहु-उपयोगकर्ता प्रणाली की सुरक्षा करती है: स्वामित्व, जो एक उपयोगकर्ता, समूह और अन्य को निर्दिष्ट करता है, और पढ़ने, लिखने और निष्पादित करने की अनुमति बिट्स।

  • 👥 स्वामित्व: प्रत्येक फ़ाइल और निर्देशिका किसी उपयोगकर्ता (मालिक), किसी समूह और अन्य लोगों से संबंधित होती है, जिसे कभी-कभी दुनिया कहा जाता है।
  • 🔑 अनुमतियां: प्रत्येक स्वामी वर्ग पर तीन अनुमतियाँ लागू होती हैं: पढ़ना (r), लिखना (w), और निष्पादन करना (x)।
  • 📃 लिस्टिंग: ls -l कमांड अनुमति स्ट्रिंग दिखाती है, जैसे कि -rw-rw-r– जो मालिक, समूह और दुनिया के लिए होती है।
  • 🔢 निरपेक्ष मोड: तीन अंकों की ऑक्टल संख्या के साथ chmod कमांड तीनों वर्गों के लिए एक साथ अनुमतियाँ निर्धारित करता है, उदाहरण के लिए 764।
  • प्रतीकात्मक मोड: chmod कमांड का उपयोग u, g, o, a और +, -, = के साथ करने से एक ओनर क्लास बदल जाती है, जबकि अन्य ओनर क्लास प्रभावित नहीं होतीं।
  • 🧭 स्वामित्व आदेश: chown कमांड मालिक और समूह दोनों को बदलता है, जबकि chgrp केवल समूह को बदलता है।
  • 🤖 एआई सहायता: एआई सहायक और गिटहब कोपायलट chmod और chown कमांड उत्पन्न और समझा सकते हैं।

लिनक्स और यूनिक्स में फ़ाइल अनुमतियाँ: कैसे पढ़ें, लिखें और बदलें

फ़ाइल अनुमतियाँ Linux यूनिक्स यह तय करता है कि कौन किस फ़ाइल को पढ़ सकता है, संशोधित कर सकता है या चला सकता है, जिससे साझा, बहु-उपयोगकर्ता प्रणाली सुरक्षित रहती है। यह पृष्ठ फ़ाइल स्वामित्व, पढ़ने, लिखने और निष्पादन की अनुमतियों और उन्हें बदलने वाले कमांड के बारे में विस्तार से बताता है।

लिनक्स, यूनिक्स का क्लोन है, जो एक बहु-उपयोगकर्ता ऑपरेटिंग सिस्टम है जिसे कई उपयोगकर्ता एक साथ उपयोग कर सकते हैं। लिनक्स को बिना किसी बदलाव के मेनफ्रेम और सर्वर पर भी इस्तेमाल किया जा सकता है। लेकिन इससे सुरक्षा संबंधी चिंताएं पैदा होती हैं, क्योंकि कोई अनधिकृत या दुर्भावनापूर्ण उपयोगकर्ता महत्वपूर्ण डेटा को दूषित, परिवर्तित या हटा सकता है। प्रभावी सुरक्षा के लिए, लिनक्स प्राधिकरण को दो स्तरों में विभाजित करता है:

  • स्वामित्व
  • अनुमति

लिनक्स में फ़ाइल अनुमति और स्वामित्व की अवधारणा अत्यंत महत्वपूर्ण है। यहाँ हम लिनक्स अनुमतियों और स्वामित्व की व्याख्या करेंगे और दोनों पर चर्चा करेंगे। चलिए स्वामित्व से शुरू करते हैं।

लिनक्स फ़ाइल स्वामित्व

आपके Unix/Linux सिस्टम पर प्रत्येक फ़ाइल और डायरेक्टरी को तीन प्रकार के स्वामी दिए जाते हैं, जिनका विवरण नीचे दिया गया है। नीचे दिया गया आरेख दर्शाता है कि स्वामित्व उपयोगकर्ता, समूह और अन्य के साथ कैसे संबंधित है।

उपयोगकर्ता, समूह और अन्य अनुमति वर्गों को दर्शाने वाला लिनक्स फ़ाइल स्वामित्व का आरेख

उपयोगकर्ता

उपयोगकर्ता फ़ाइल का स्वामी होता है। डिफ़ॉल्ट रूप से, फ़ाइल बनाने वाला व्यक्ति उसका स्वामी बन जाता है। इसलिए, उपयोगकर्ता को कभी-कभी स्वामी भी कहा जाता है।

समूह

A यूजर ग्रुप एक समूह में कई उपयोगकर्ता हो सकते हैं। समूह के सभी उपयोगकर्ताओं को फ़ाइल के लिए समान लिनक्स समूह अनुमतियाँ प्राप्त होती हैं। मान लीजिए आपके पास एक प्रोजेक्ट है जिसमें कई लोगों को एक फ़ाइल तक पहुँच की आवश्यकता है। प्रत्येक उपयोगकर्ता को मैन्युअल रूप से अनुमतियाँ देने के बजाय, आप सभी उपयोगकर्ताओं को एक समूह में जोड़ सकते हैं और फ़ाइल को समूह अनुमति दे सकते हैं, ताकि केवल ये समूह सदस्य ही फ़ाइलों को पढ़ या संशोधित कर सकें, कोई और नहीं।

अन्य

कोई भी अन्य उपयोगकर्ता जिसके पास फ़ाइल तक पहुंच है। इस व्यक्ति ने न तो फ़ाइल बनाई है और न ही वह किसी ऐसे उपयोगकर्ता समूह का सदस्य है जो फ़ाइल का मालिक हो सकता है। व्यावहारिक रूप से, इसका अर्थ है कि हर कोई अन्य उपयोगकर्ता। इसलिए, जब आप दूसरों के लिए अनुमति निर्धारित करते हैं, तो इसे 'विश्व के लिए अनुमति निर्धारित करना' भी कहा जाता है।

अब बड़ा सवाल उठता है: लिनक्स इन तीन प्रकार के उपयोगकर्ताओं के बीच अंतर कैसे करता है ताकि उपयोगकर्ता 'ए' किसी ऐसी फ़ाइल को प्रभावित न कर सके जिसमें किसी अन्य उपयोगकर्ता 'बी' की महत्वपूर्ण जानकारी या डेटा हो? यह ठीक वैसा ही है जैसे आप अपने किसी सहकर्मी को, जो आपके कंप्यूटर पर काम करता है, प्रभावित नहीं करना चाहते। लिनक्स कंप्यूटर आपकी छवियों को देखने के लिए। यहीं पर अनुमतियाँ काम आती हैं, और वे उपयोगकर्ता के व्यवहार को परिभाषित करती हैं।

आइए लिनक्स पर अनुमति प्रणाली को समझते हैं।

लिनक्स फ़ाइल अनुमतियाँ

आपके यूनिक्स/लिनक्स सिस्टम में प्रत्येक फ़ाइल और निर्देशिका के लिए ऊपर बताए गए तीनों स्वामियों के लिए निम्नलिखित तीन अनुमतियाँ परिभाषित की गई हैं।

  • पढ़ें: यह अनुमति आपको किसी फ़ाइल को खोलने और पढ़ने का अधिकार देती है। किसी डायरेक्टरी पर रीड अनुमति आपको उसकी सामग्री को सूचीबद्ध करने की क्षमता प्रदान करती है।
  • लिखना: राइट परमिशन आपको किसी फ़ाइल की सामग्री को संशोधित करने का अधिकार देती है। किसी डायरेक्टरी पर राइट परमिशन आपको उस डायरेक्टरी में संग्रहीत फ़ाइलों को जोड़ने, हटाने और उनका नाम बदलने का अधिकार देती है। मान लीजिए कि आपके पास किसी फ़ाइल पर राइट परमिशन है, लेकिन उस डायरेक्टरी पर नहीं है जहाँ वह फ़ाइल संग्रहीत है। आप फ़ाइल की सामग्री को संशोधित तो कर सकेंगे, लेकिन आप फ़ाइल का नाम नहीं बदल सकेंगे, उसे स्थानांतरित नहीं कर सकेंगे या डायरेक्टरी से हटा नहीं सकेंगे।
  • निष्पादित: In Windowsएक निष्पादन योग्य प्रोग्राम में आमतौर पर “.exe” एक्सटेंशन होता है, जिसे आप आसानी से चला सकते हैं। Unix/Linux में, आप किसी प्रोग्राम को तब तक नहीं चला सकते जब तक कि उसे चलाने की अनुमति न हो। यदि चलाने की अनुमति नहीं है, तो आप प्रोग्राम कोड को देख या संशोधित कर सकते हैं (बशर्ते पढ़ने और लिखने की अनुमति हो), लेकिन उसे चला नहीं सकते।

आइए उदाहरणों के साथ लिनक्स में फ़ाइल अनुमतियों को समझते हैं। टर्मिनल पर ls -l कमांड चलाने पर यह परिणाम मिलता है:

ls -l

नीचे दिए गए स्क्रीनशॉट में अनुमति स्ट्रिंग को एक लंबी सूची में दिखाया गया है।

टर्मिनल ls -l कमांड का आउटपुट एक फ़ाइल के लिए अनुमति स्ट्रिंग rw-rw-r-- दिखाता है।

यहां हमने '-rw-rw-r–' को हाईलाइट किया है, और यह अजीब दिखने वाला कोड हमें मालिक, उपयोगकर्ता समूह और दुनिया को दी गई यूनिक्स अनुमतियों के बारे में बताता है।

यहां, पहला '-' यह दर्शाता है कि हमने एक फ़ाइल का चयन किया है। नीचे दिया गया आइकन एक सामान्य फ़ाइल को दर्शाता है।

छोटा आइकन यह दर्शाता है कि सूचीबद्ध आइटम एक सामान्य फ़ाइल है।

अन्यथा, यदि यह एक निर्देशिका होती, तो नीचे दी गई सूची की तरह 'd' प्रदर्शित होता।

टर्मिनल सूची में एक निर्देशिका दिखाई दे रही है जिसके अनुमति स्ट्रिंग में शुरुआत में 'd' अक्षर है।

पात्रों को याद रखना बहुत आसान है।

  • r = पढ़ने की अनुमति
  • w = लेखन अनुमति
  • x = निष्पादन अनुमति
  • – = अनुमति नहीं है

आइए इसे इस तरह से देखें। कोड का पहला भाग 'rw-' है। इससे पता चलता है कि मालिक 'Home' निम्न कार्य कर सकता है:

  • फ़ाइल पढ़ें
  • फ़ाइल लिखें या संपादित करें

मालिक फ़ाइल को निष्पादित नहीं कर सकता, क्योंकि निष्पादन बिट '-' पर सेट है। नीचे दिया गया आइकन निष्पादन बिट को डैश में बदलने को दर्शाता है।

एक्जीक्यूट परमिशन बिट को डैश में बदलने वाला छोटा आइकन

डिजाइन के अनुसार, फेडोरा, सेंटओएस और कई लिनक्स वितरणों में यह सुविधा होती है। Ubuntu किसी उपयोगकर्ता को उसी नाम के समूह में जोड़ें। इस प्रकार, 'टॉम' नामक उपयोगकर्ता को 'टॉम' नामक समूह में जोड़ा जाता है।

दूसरा भाग 'rw-' है। यह 'होम' उपयोगकर्ता समूह के लिए है, और समूह के सदस्य निम्न कार्य कर सकते हैं:

  • फ़ाइल पढ़ें
  • फ़ाइल लिखें या संपादित करें

तीसरा भाग दुनिया के लिए है, जिसका अर्थ है कोई भी उपयोगकर्ता। इसमें 'r–' लिखा है। इसका मतलब है कि उपयोगकर्ता केवल ये कर सकता है:

  • फ़ाइल पढ़ें

नीचे दिया गया विवरण अनुमति स्ट्रिंग के प्रत्येक भाग को स्वामी, समूह और दुनिया से जोड़ता है।

rw-rw-r-- अनुमति स्ट्रिंग का स्वामी, समूह और विश्व अनुभागों में विभाजन

Linux में 'chmod' कमांड का उपयोग करके फ़ाइल/डायरेक्टरी की अनुमतियाँ बदलना

मान लीजिए कि आप नहीं चाहते कि आपका कोई सहकर्मी आपकी निजी तस्वीरें देखे। फ़ाइल अनुमतियों को बदलकर ऐसा किया जा सकता है।

हम 'chmod' का उपयोग कर सकते हैं। आदेश, जिसका अर्थ है 'मोड बदलें'। इस कमांड का उपयोग करके, हम किसी फ़ाइल या डायरेक्टरी पर मालिक, समूह और दुनिया के लिए अनुमतियाँ (पढ़ना, लिखना, निष्पादित करना) सेट कर सकते हैं।

सिंटेक्स:

chmod permissions filename

इस कमांड का उपयोग करने के दो तरीके हैं:

  • निरपेक्ष मोड
  • प्रतीकात्मक मोड

लिनक्स में निरपेक्ष (संख्यात्मक) मोड

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

नंबर अनुमति प्रकार चिन्ह
0 अनुमति नहीं -
1 निष्पादित करना -एक्स
2 लिखना -डब्ल्यू-
3 निष्पादित करें + लिखें -डब्ल्यूएक्स
4 पढ़ना आर-
5 पढ़ें + निष्पादित करें आरएक्स
6 पढ़ना + लिखना आरडब्ल्यू-
7 पढ़ें + लिखें + निष्पादित करें आरडब्ल्यूएक्स

आइए नीचे दिए गए टर्मिनल विंडो में दिखाए गए अनुसार chmod कमांड को क्रियान्वित होते हुए देखें।

टर्मिनल पर "chmod 764" कमांड चलाकर "sample" फ़ाइल की अनुमतियों को बदला जा रहा है।

ऊपर दिए गए टर्मिनल विंडो में, हमने 'सैंपल' फ़ाइल की अनुमतियों को '764' में बदल दिया है। '764' का पूर्ण कोड निम्नलिखित दर्शाता है:

  • स्वामी पढ़, लिख और निष्पादित कर सकता है।
  • उपयोगकर्ता समूह पढ़ और लिख सकता है।
  • दुनिया केवल पढ़ सकती है।

इसे '-rwxrw-r–' के रूप में दर्शाया गया है, जैसा कि नीचे दिए गए परिणाम में है।

टर्मिनल लिस्टिंग में chmod 764 के बाद -rwxrw-r-- अनुमति स्ट्रिंग वाली सैंपल फ़ाइल दिखाई दे रही है।

इस प्रकार आप किसी फ़ाइल पर उपयोगकर्ता अनुमतियों को बदलने के लिए लिनक्स में एक निरपेक्ष संख्या निर्दिष्ट कर सकते हैं।

लिनक्स में प्रतीकात्मक मोड

एब्सोल्यूट मोड में, आप तीनों मालिकों के लिए अनुमतियाँ बदल सकते हैं। सिंबॉलिक मोड में, आप किसी विशिष्ट मालिक की अनुमतियों को संशोधित कर सकते हैं। यह यूनिक्स फ़ाइल अनुमतियों को संशोधित करने के लिए गणितीय प्रतीकों का उपयोग करता है।

Operaटो विवरण
+ किसी फ़ाइल या निर्देशिका में अनुमति जोड़ता है
- अनुमति हटाता है
= यह अनुमति निर्धारित करता है और पहले से निर्धारित अनुमतियों को ओवरराइड करता है।

विभिन्न मालिकों का विवरण इस प्रकार है।

उपयोगकर्ता संकेत
u उपयोगकर्ता/स्वामी
g समूह
o अन्य
a सब

हम 755 जैसी संख्याओं में अनुमति का उपयोग नहीं करेंगे, बल्कि rwx जैसे अक्षरों में अनुमति का उपयोग करेंगे। आइए नीचे दिए गए उदाहरण को देखें।

टर्मिनल में u, g, o और +, -, = के साथ प्रतीकात्मक chmod का उपयोग करके विशिष्ट अनुमतियों को बदला जा सकता है।

लिनक्स में स्वामित्व और समूह बदलना

किसी फ़ाइल या डायरेक्टरी का स्वामित्व बदलने के लिए, आप निम्न कमांड का उपयोग कर सकते हैं:

chown user filename

यदि आप किसी फ़ाइल या निर्देशिका के लिए उपयोगकर्ता और समूह दोनों को बदलना चाहते हैं, तो निम्न कमांड का उपयोग करें:

chown user:group filename

आइए इसे नीचे दिखाए गए तरीके से व्यवहार में देखें।

टर्मिनल पर chown कमांड चलाकर किसी फ़ाइल के स्वामी और समूह को बदला जा रहा है।

यदि आप केवल समूह के स्वामी को बदलना चाहते हैं, तो निम्न कमांड का उपयोग करें:

chgrp group_name filename

'chgrp' का अर्थ है समूह परिवर्तन। नीचे दिया गया स्क्रीनशॉट chgrp कमांड के उपयोग को दर्शाता है।

टर्मिनल पर chgrp कमांड चलाकर केवल एक फ़ाइल के समूह स्वामी को बदला जा रहा है।

टिप

  • /etc/group फ़ाइल में सिस्टम पर परिभाषित सभी समूह शामिल होते हैं।
  • आप नीचे दिखाए गए तरीके से "groups" कमांड का उपयोग करके उन सभी समूहों को ढूंढ सकते हैं जिनके आप सदस्य हैं।

टर्मिनल पर groups कमांड चलाकर उन ग्रुप्स की सूची प्राप्त करें जिनसे उपयोगकर्ता संबंधित है।

  • आप नीचे दिखाए गए अनुसार, अपने डिफ़ॉल्ट समूह के अलावा किसी अन्य समूह के सदस्य के रूप में काम करने के लिए newgrp कमांड का उपयोग कर सकते हैं।

टर्मिनल पर newgrp कमांड चलाकर किसी दूसरे समूह में स्विच करें

  • एक ही फ़ाइल का स्वामित्व दो समूहों के पास नहीं हो सकता।
  • लिनक्स में नेस्टेड ग्रुप नहीं हो सकते। एक ग्रुप दूसरे ग्रुप का सब-ग्रुप नहीं हो सकता।
  • x — किसी डायरेक्टरी को एक्जीक्यूट करने का मतलब है किसी डायरेक्टरी में "प्रवेश" करने और सब-डायरेक्ट्री तक संभावित पहुंच प्राप्त करने की अनुमति होना।
  • फाइलों और डायरेक्टरी पर आप अन्य अनुमतियां भी सेट कर सकते हैं, जिन्हें बाद में एक उन्नत ट्यूटोरियल में कवर किया जाएगा।

अक्सर पूछे जाने वाले प्रश्न

chmod कमांड का उपयोग करके स्क्रिप्ट को एक्जीक्यूट करने की अनुमति दें। chmod +x script.sh कमांड सभी को एक्जीक्यूट करने की अनुमति देता है, जबकि chmod u+x script.sh कमांड केवल स्क्रिप्ट के मालिक को ही अनुमति देता है। इसके बाद, आप स्क्रिप्ट को सीधे उसकी डायरेक्टरी से ./script.sh कमांड का उपयोग करके चला सकते हैं।

umask नए बनाए गए फ़ाइलों और निर्देशिकाओं से हटाई गई डिफ़ॉल्ट अनुमतियों को सेट करता है। फ़ाइलें 666 से और निर्देशिकाएँ 777 से शुरू होती हैं, उसके बाद umask का मान बदल जाता है।tracसामान्य umask मान 022 होने पर फ़ाइलें 644 और निर्देशिकाएँ 755 प्राप्त होती हैं। वर्तमान मान देखने के लिए umask कमांड चलाएँ।

ये विशेष अनुमति बिट्स हैं। setuid किसी प्रोग्राम को उसके स्वामी के अधिकारों के साथ चलाता है, setgid उसे समूह के अधिकारों के साथ चलाता है या नई फ़ाइलों को किसी निर्देशिका के समूह का इनहेरिट करवाता है, और sticky बिट केवल /tmp जैसी साझा निर्देशिका के अंदर किसी फ़ाइल के स्वामी को ही उसे हटाने की अनुमति देता है।

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

उस त्रुटि का अर्थ है कि आपके पास फ़ाइल में परिवर्तन करने का अधिकार नहीं है। chmod कमांड चलाने के लिए, आपके पास फ़ाइल का स्वामित्व होना चाहिए या आप रूट उपयोगकर्ता होने चाहिए; chown कमांड चलाने के लिए आमतौर पर रूट उपयोगकर्ता की आवश्यकता होती है। कमांड से पहले sudo लगाएं, या फ़ाइल के स्वामी बनें और पुनः प्रयास करें।

रिकर्सिव -R विकल्प का उपयोग करें। chmod -R 755 myfolder फ़ोल्डर और उसके अंदर मौजूद प्रत्येक फ़ाइल और सबफ़ोल्डर पर अनुमतियाँ लागू करता है, और chown -R user:group myfolder स्वामित्व के लिए भी यही करता है। -R का उपयोग सावधानीपूर्वक करें, क्योंकि यह फ़ोल्डर के नीचे की प्रत्येक वस्तु को प्रभावित करता है।

एआई सहायक "इस स्क्रिप्ट को केवल मेरे लिए निष्पादन योग्य बनाएं" जैसे अनुरोध को सही chmod कमांड में अनुवादित कर सकते हैं, मोड 755 का अर्थ समझा सकते हैं और 777 जैसी जोखिम भरी सेटिंग्स के बारे में चेतावनी दे सकते हैं। मशीन-लर्निंग सुरक्षा उपकरण उन फ़ाइलों को भी चिह्नित करते हैं जिनकी अनुमतियाँ खतरनाक रूप से खुली हुई प्रतीत होती हैं।

हां. गिटहब कोपिलॉट आप जो अनुमतियाँ या स्वामी चाहते हैं, उसका संक्षिप्त विवरण देने वाली टिप्पणी से chmod, chown और chgrp कमांड सुझा सकते हैं, और जैसे ही आप टाइप करते हैं, उन्हें पूरा कर सकते हैं। Revप्रत्येक सुझाव को चलाने से पहले उसकी समीक्षा करें, क्योंकि अनुमति और स्वामित्व में परिवर्तन सुरक्षा को प्रभावित करते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: