यदि आप कुछ समय (और यहां तक कि ओएस एक्स) के लिए लिनक्स का उपयोग कर रहे हैं, तो आप शायद "अनुमति" त्रुटि के साथ आए हैं। लेकिन वे वास्तव में क्या हैं, और वे आवश्यक या उपयोगी क्यों हैं? आइए अंदर देखते हैं।
उपयोगकर्ता
दिन में, कंप्यूटर बड़े पैमाने पर मशीनें थीं जो अविश्वसनीय रूप से महंगी थीं। उनमें से सबसे अधिक बनाने के लिए, कई कंप्यूटर टर्मिनलों को झुका दिया गया था, जिससे कई उपयोगकर्ताओं को एक साथ अपने व्यवसाय के बारे में जाने की अनुमति मिली। डेटा प्रसंस्करण और भंडारण मशीन पर किया गया था, जबकि टर्मिनलों को डेटा देखने और इनपुट करने के साधन से थोड़ा अधिक था। यदि आप इसके बारे में सोचते हैं, तो यह बहुत ज्यादा है कि हम "क्लाउड" पर डेटा कैसे एक्सेस करते हैं; अमेज़ॅन के क्लाउड एमपी 3 सिस्टम, जीमेल और ड्रॉपबॉक्स को देखें, और आप देखेंगे कि स्थानीय स्तर पर परिवर्तन किए जाने के दौरान, सब कुछ दूरस्थ रूप से संग्रहीत किया जाता है।
(छवि: जेनिथ जेड -19 "गूंगा" टर्मिनल; क्रेडिट: ajmexico )
इसे काम करने के लिए, अलग-अलग उपयोगकर्ताओं के पास खाते होना आवश्यक है। उनके पास आवंटित भंडारण क्षेत्र का एक खंड होना चाहिए, और उन्हें कमांड और प्रोग्राम चलाने की अनुमति दी जानी चाहिए। सभी को विशिष्ट "उपयोगकर्ता अनुमतियां" मिलती हैं, जो यह निर्धारित करती हैं कि वे क्या कर सकते हैं और क्या नहीं कर सकते हैं, जहां वे सिस्टम पर करते हैं और उनकी पहुंच नहीं है, और जिनकी फाइलें वे संशोधित नहीं कर सकते हैं। प्रत्येक उपयोगकर्ता को विभिन्न समूहों में भी रखा जाता है, जो आगे पहुंच प्रदान करते हैं या प्रतिबंधित करते हैं।
फ़ाइल का उपयोग
इस निराला बहु-उपयोगकर्ता दुनिया में, हम पहले से ही सीमाओं को निर्धारित करते हैं कि उपयोगकर्ता क्या कर सकते हैं। लेकिन वे क्या उपयोग करते हैं? खैर, हर फाइल में अनुमतियों का एक सेट और एक मालिक होता है। मालिक पदनाम, आम तौर पर बाध्य होता है जब फ़ाइल बनाई जाती है, यह घोषणा करता है कि यह किस उपयोगकर्ता का है और केवल वह उपयोगकर्ता ही इसकी पहुंच अनुमतियों को बदल सकता है।
लिनक्स की दुनिया में, अनुमतियाँ तीन श्रेणियों में टूट जाती हैं: पढ़ना, लिखना और निष्पादित करना। "पढ़ें" पहुंच किसी को फ़ाइल की सामग्री को देखने की अनुमति देता है, "लिखने" तक पहुँच किसी को फ़ाइल की सामग्री को संशोधित करने की अनुमति देता है, और "निष्पादित" एक स्क्रिप्ट या प्रोग्राम की तरह निर्देशों का एक सेट चलाने की अनुमति देता है। इन श्रेणियों में से प्रत्येक को विभिन्न वर्गों पर लागू किया जाता है: उपयोगकर्ता, समूह और दुनिया। "उपयोगकर्ता" का अर्थ है स्वामी, "समूह" का अर्थ है कोई भी उपयोगकर्ता जो स्वामी के समान समूह में है, और "दुनिया" का अर्थ है कोई भी और हर कोई।
इन अनुमतियों के साथ फ़ोल्डर भी प्रतिबंधित किए जा सकते हैं। उदाहरण के लिए, आप अपने समूह के अन्य लोगों को अपने होम फ़ोल्डर में निर्देशिकाओं और फ़ाइलों को देखने की अनुमति दे सकते हैं, लेकिन आपके समूह के बाहर किसी को भी नहीं। जब तक आप किसी प्रकार की साझा परियोजना पर काम नहीं कर रहे हैं, तब तक आप केवल अपने आप तक "लिखना" पहुंच को सीमित करना चाहेंगे। आप एक साझा निर्देशिका भी बना सकते हैं जो किसी को भी उस फ़ोल्डर में फ़ाइलों को देखने और संशोधित करने की अनुमति देता है।
उबंटू में अनुमतियाँ बदलना
जीयूआई
उबंटू में एक फ़ाइल की अनुमति बदलने के लिए, बस फ़ाइल पर राइट-क्लिक करें और "गुण" पर जाएं।
आप बदल सकते हैं कि मालिक, समूह, या अन्य पढ़ और लिख सकते हैं, केवल पढ़ सकते हैं, या कुछ भी नहीं कर सकते हैं। आप फ़ाइल के निष्पादन की अनुमति देने के लिए एक बॉक्स भी देख सकते हैं, और यह इसे स्वामी, समूह और अन्य लोगों के लिए एक साथ सक्षम करेगा।
कमांड लाइन
आप इसे कमांड-लाइन के माध्यम से भी कर सकते हैं। उस निर्देशिका में जाएं जिसमें फ़ाइलें हैं और सूची में सभी फ़ाइलों को देखने के लिए निम्न कमांड टाइप करें:
एलएस -लाल
प्रत्येक फ़ाइल और निर्देशिका के आगे, आपको एक विशेष खंड दिखाई देगा, जो इसकी अनुमतियों को रेखांकित करता है। यह इस तरह दिख रहा है:
-rwxrw-R-
आर "पढ़ने" के लिए खड़ा है में "लिखने," और के लिए खड़ा है एक्स "निष्पादित" के लिए खड़ा है निर्देशिकाएँ एक "-" के बजाय एक "डी" से शुरू होगी। आप यह भी देखेंगे कि 10 स्थान हैं जो मूल्य रखते हैं। आप पहले की उपेक्षा कर सकते हैं, और फिर 3 के 3 सेट हैं। पहला सेट मालिक के लिए है, दूसरा सेट समूह के लिए है, और अंतिम सेट दुनिया के लिए है।
फ़ाइल या निर्देशिका की अनुमतियां बदलने के लिए, chmod कमांड के मूल रूप को देखें।
chmod [class][operator][permission] फ़ाइल
chmod [ugoa][+ or –] [rwx] फ़ाइल
यह पहली बार में जटिल लग सकता है, लेकिन मेरा विश्वास करो, यह बहुत आसान है। सबसे पहले, कक्षाओं को देखें:
- u: यह मालिक के लिए है।
- g: यह समूह के लिए है।
- o: यह अन्य सभी के लिए है।
- a: यह उपरोक्त सभी के लिए अनुमतियां बदल देगा।
अगला, ऑपरेटरों:
- +: प्लस चिन्ह उन अनुमतियों को जोड़ेगा जो अनुसरण करती हैं।
- -: माइनस साइन उन अनुमतियों को हटा देगा जो अनुसरण करते हैं।
अभी तक मेरे साथ है? और अंतिम खंड वही है जब हमने किसी फ़ाइल की अनुमतियों की जाँच की है:
- r: पढ़ने की अनुमति देता है।
- w: लिखने की अनुमति देता है।
- x: निष्पादन की अनुमति देता है।
अब, इसे एक साथ रखें। मान लें कि हमारे पास "todo.txt" नाम की एक फ़ाइल है जिसमें निम्नलिखित अनुमतियाँ हैं:
-rw-rw-R-
यही है, मालिक और समूह पढ़ और लिख सकते हैं, और दुनिया केवल पढ़ सकती है। हम इनकी अनुमति बदलना चाहते हैं:
-rwxr--
यही है, मालिक के पास पूर्ण अनुमति है, और समूह पढ़ सकता है। हम इसे 3 चरणों में कर सकते हैं। पहले, हम उपयोगकर्ता के लिए निष्पादन की अनुमति जोड़ देंगे।
chmod u + x todo.txt
फिर, हम समूह के लिए लिखित अनुमति को हटा देंगे।
chmod g-w todo.txt
अंत में, हम अन्य सभी उपयोगकर्ताओं के लिए पठन अनुमतियाँ हटा देंगे।
χμοτό ο-ρ οο.τχτ
हम इन्हें एक कमांड में भी जोड़ सकते हैं, जैसे:
chmod u + x, g-w, o-r todo.txt
आप देख सकते हैं कि प्रत्येक खंड अल्पविराम द्वारा अलग किया गया है और कोई स्थान नहीं है।
यहां कुछ उपयोगी अनुमतियां दी गई हैं:
- -rwxr-xr-x: मालिक के पास पूर्ण अनुमतियां हैं, समूह और अन्य उपयोगकर्ता फ़ाइल सामग्री पढ़ सकते हैं और निष्पादित कर सकते हैं।
- -rxx-r–: मालिक के पास पूर्ण अनुमति है, समूह और अन्य उपयोगकर्ता केवल फ़ाइल पढ़ सकते हैं (उपयोगी है यदि आप दूसरों को अपनी फ़ाइलों को देखने से बुरा नहीं मानते हैं।
- -rwx--: मालिक के पास पूर्ण अनुमति है, अन्य सभी के पास कोई नहीं है (व्यक्तिगत स्क्रिप्ट के लिए उपयोगी)।
- -rw-rw--: मालिक और समूह पढ़ और लिख सकते हैं (समूह के सदस्यों के साथ सहयोग के लिए उपयोगी)।
- -rw-r-r-: मालिक पढ़ सकते हैं और लिख सकते हैं, समूह और अन्य उपयोगकर्ता केवल फ़ाइल पढ़ सकते हैं (साझा नेटवर्क पर व्यक्तिगत फ़ाइलों को संग्रहीत करने के लिए उपयोगी)।
- -rw--: मालिक पढ़ और लिख सकता है, अन्य सभी के पास कोई नहीं है (व्यक्तिगत फ़ाइलों को संग्रहीत करने के लिए उपयोगी)।
कुछ अन्य चीजें हैं जो आप chmod के साथ कर सकते हैं - जैसे कि setuid और setgid - लेकिन वे थोड़ी गहराई में हैं और अधिकांश उपयोगकर्ताओं को वास्तव में वैसे भी उनका उपयोग करने की आवश्यकता नहीं है।
रूट या सुपर-उपयोगकर्ता और सिस्टम फ़ाइलें
आजकल, हम हमेशा ऐसे सिस्टम नहीं चलाते हैं जिनमें कई उपयोगकर्ता होते हैं। हमें अभी भी अनुमति की चिंता क्यों करनी चाहिए?
ठीक है, यूनिक्स और उसके डेरिवेटिव - लिनक्स, ओएस एक्स, दूसरों के बीच - उपयोगकर्ता द्वारा संचालित चीजों के बीच भी अंतर करते हैं, एक व्यवस्थापक द्वारा या व्यवस्थापक विशेषाधिकारों के साथ चलने वाली चीजें, और सिस्टम द्वारा स्वयं चलाए जाने वाली चीजें। इस प्रकार, सिस्टम के लिए अभिन्न चीजें ऐसी होती हैं जिन्हें बदलने या एक्सेस करने के लिए व्यवस्थापक विशेषाधिकार की आवश्यकता होती है। इस तरह, आप गलती से कुछ भी गड़बड़ नहीं करते हैं।
उबंटू में, सिस्टम फ़ाइलों में परिवर्तन करने के लिए आप प्रशासक विशेषाधिकारों के समतुल्य प्राप्त करने के लिए "sudo" या "gksudo" का उपयोग करें। अन्य डिस्ट्रोस में, आप "रूट" या "सुपर-यूज़र" पर स्विच करते हैं जो प्रभावी रूप से एक ही काम करता है जब तक आप लॉग आउट नहीं करते हैं।
ध्यान रखें कि इन दोनों परिस्थितियों में, फ़ाइल अनुमतियों को बदलने से प्रोग्राम काम नहीं कर सकते हैं, अनजाने में फ़ाइल स्वामित्व को रूट उपयोगकर्ता (स्वामी के बजाय) में बदल सकते हैं, और सिस्टम को कम सुरक्षित बना सकते हैं (अधिक अनुमतियां प्रदान करके)। इस प्रकार, यह अनुशंसा की जाती है कि आप फ़ाइलों के लिए अनुमतियाँ न बदलें - विशेष रूप से सिस्टम फ़ाइल्स - जब तक कि यह आवश्यक न हो या आपको पता न हो कि आप क्या कर रहे हैं।
उपयोगकर्ताओं के बीच सुरक्षा की एक बुनियादी प्रणाली प्रदान करने के लिए फ़ाइल अनुमतियां मौजूद हैं। यह सीखना कि वे कैसे काम करते हैं, आपको एक बहु-उपयोगकर्ता वातावरण में बुनियादी साझाकरण स्थापित करने में मदद कर सकते हैं, "सार्वजनिक" फाइलों की रक्षा कर सकते हैं, और आपको एक सुराग दे सकते हैं जब सिस्टम फ़ाइल स्वामित्व के साथ कुछ गलत हो जाता है।
लगता है कि आप चीजों को आसान समझा सकते हैं? एक सुधार है? पुराने दिनों के बारे में याद दिलाना चाहते हैं? एक ब्रेक लें और अपने विचारों को टिप्पणियों में नीचे रखें।