एंड्रॉयड

लिनक्स में चामोद कमांड (फाइल अनुमति)

लिनक्स - बदलें अनुमतियां और फ़ाइलों के लिए स्वामित्व और फ़ोल्डर (chmod, chown, सदस्यों, समूहों)

लिनक्स - बदलें अनुमतियां और फ़ाइलों के लिए स्वामित्व और फ़ोल्डर (chmod, chown, सदस्यों, समूहों)

विषयसूची:

Anonim

लिनक्स में, फाइल की अनुमति फ़ाइल अनुमतियों, विशेषताओं और स्वामित्व के माध्यम से प्रबंधित की जाती है। यह सुनिश्चित करता है कि केवल अधिकृत उपयोगकर्ता और प्रक्रियाएं फ़ाइलों और निर्देशिकाओं तक पहुंच सकती हैं।

यह ट्यूटोरियल फाइलों और निर्देशिकाओं की पहुंच अनुमतियों को बदलने के लिए chmod कमांड का उपयोग करने का तरीका बताता है।

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

आगे जाने से पहले, आइए बुनियादी लिनक्स अनुमतियों के मॉडल की व्याख्या करें।

लिनक्स में, प्रत्येक फ़ाइल एक मालिक और एक समूह से जुड़ी होती है और उपयोगकर्ताओं के तीन अलग-अलग वर्गों के लिए अनुमति के अधिकार के साथ असाइन की जाती है:

  • फ़ाइल का स्वामी। समूह के सदस्य। अन्य (बाकी सभी)।

फ़ाइल स्वामित्व को chown और chgrp कमांड का उपयोग करके बदला जा सकता है।

प्रत्येक वर्ग पर लागू होने वाली तीन फ़ाइल अनुमतियां प्रकार हैं:

  • पढ़ने की अनुमति। लिखने की अनुमति। निष्पादित अनुमति।

यह अवधारणा आपको यह निर्दिष्ट करने की अनुमति देती है कि किन उपयोगकर्ताओं को फ़ाइल पढ़ने, फ़ाइल पर लिखने या फ़ाइल को निष्पादित करने की अनुमति है।

ls कमांड का उपयोग करके फाइल की अनुमति देखी जा सकती है:

ls -l filename.txt

-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type

पहला वर्ण फ़ाइल प्रकार दिखाता है। यह एक नियमित फ़ाइल ( - ), निर्देशिका ( d ), एक प्रतीकात्मक लिंक ( l ), या किसी अन्य विशेष प्रकार की फ़ाइल हो सकती है।

अगले नौ वर्ण फ़ाइल अनुमतियों का प्रतिनिधित्व करते हैं, प्रत्येक में तीन वर्णों के तीन ट्रिपल। पहला ट्रिपल मालिक की अनुमतियों को दिखाता है, दूसरे को समूह की अनुमतियों को और अंतिम ट्रिपल को अन्य सभी अनुमतियों को दिखाता है। फ़ाइल प्रकार के आधार पर अनुमतियों का एक अलग अर्थ हो सकता है।

ऊपर दिए गए उदाहरण में ( rw-r--r-- ) का अर्थ है कि फ़ाइल स्वामी ने अनुमतियों ( rw- ) को पढ़ा और लिखा है, समूह और अन्य ने केवल अनुमतियाँ ( rw- ) पढ़ी हैं।

तीन अनुमति ट्रिपल में से प्रत्येक का निर्माण निम्न वर्णों से किया जा सकता है और एक अलग प्रभाव पड़ता है, यह इस बात पर निर्भर करता है कि वे किसी फ़ाइल में या किसी निर्देशिका में सेट हैं:

फाइलों पर अनुमतियों का प्रभाव

अनुमति चरित्र फाइल पर अर्थ
पढ़ें - फ़ाइल पठनीय नहीं है। आप फ़ाइल सामग्री नहीं देख सकते हैं।
r फ़ाइल पठनीय है।
लिखना - फ़ाइल को बदला या संशोधित नहीं किया जा सकता है।
w फ़ाइल को बदला या बदला जा सकता है।
निष्पादित - फ़ाइल निष्पादित नहीं की जा सकती।
x फ़ाइल निष्पादित की जा सकती है।
s यदि user ट्रिपल में पाया जाता है तो यह setuid बिट सेट करता है। यदि group ट्रिपल में पाया जाता है, तो यह setgid बिट सेट करता है। इसका मतलब यह भी है कि x ध्वज सेट है।

जब setgid या झंडे के झंडे को निष्पादन योग्य फ़ाइल पर सेट किया जाता है, तो फ़ाइल को फ़ाइल के मालिक और / या समूह विशेषाधिकारों के साथ निष्पादित किया जाता है।

S समान है, लेकिन x ध्वज सेट नहीं है। इस झंडे का इस्तेमाल शायद ही कभी फाइलों पर किया गया हो।
t यदि others ट्रिपल में पाया जाता है तो यह sticky सा सेट करता है।

इसका मतलब यह भी है कि x ध्वज सेट है। यह ध्वज फाइलों पर बेकार है।

T t समान t लेकिन x ध्वज सेट नहीं है। यह ध्वज फाइलों पर बेकार है।

निर्देशिकाएँ पर अनुमतियों का प्रभाव (फ़ोल्डर)

लिनक्स में, निर्देशिका विशेष प्रकार की फाइलें हैं जिनमें अन्य फाइलें और निर्देशिकाएं होती हैं।

अनुमति चरित्र निर्देशिका पर अर्थ
पढ़ें - निर्देशिका की सामग्री को नहीं दिखाया जा सकता है।
r निर्देशिका की सामग्री को दिखाया जा सकता है।

(उदा। आप ls साथ डायरेक्टरी के अंदर फाइलों को सूचीबद्ध कर सकते हैं।)

लिखना - निर्देशिका की सामग्री को परिवर्तित नहीं किया जा सकता है।
w निर्देशिका की सामग्री को बदला जा सकता है।

(उदा। आप नई फ़ाइलें नहीं बना सकते, फ़ाइलें हटाएं.. आदि।)

निष्पादित - निर्देशिका को परिवर्तित नहीं किया जा सकता है।
x cd का उपयोग करके निर्देशिका को नेविगेट किया जा सकता है।
s यदि user ट्रिपल में पाया जाता है, तो यह setuid बिट सेट करता है। यदि group ट्रिपल में पाया जाता है तो यह setgid बिट सेट करता है। इसका मतलब यह भी है कि x ध्वज सेट है। जब setgid ध्वज को एक निर्देशिका पर सेट किया जाता है, तो उसके भीतर बनाई गई नई फाइलें निर्देशिका समूह आईडी (GID) को विरासत में देती हैं, बजाय उस उपयोगकर्ता के प्राथमिक समूह आईडी के जिसने फ़ाइल बनाई।

setuid का निर्देशिकाओं पर कोई प्रभाव नहीं है।

S समान है, लेकिन x ध्वज सेट नहीं है। यह ध्वज निर्देशिकाओं पर बेकार है।
t यदि others ट्रिपल में पाया जाता है तो यह sticky सा सेट करता है।

इसका मतलब यह भी है कि x ध्वज सेट है। जब चिपचिपा बिट एक निर्देशिका पर सेट होता है, तो केवल फ़ाइल का मालिक, निर्देशिका का मालिक या प्रशासनिक उपयोगकर्ता निर्देशिका के भीतर फ़ाइलों को हटा या नाम बदल सकता है।

T t समान t लेकिन x ध्वज सेट नहीं है। यह ध्वज निर्देशिकाओं पर बेकार है।

chmod का उपयोग करना

chmod कमांड निम्नलिखित सामान्य रूप लेता है:

chmod MODE FILE…

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

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

प्रतीकात्मक (पाठ) विधि

प्रतीकात्मक मोड का उपयोग करते समय chmod कमांड का सिंटैक्स निम्न प्रारूप होता है:

chmod perms… FILE…

झंडे का पहला सेट ( ), उपयोगकर्ताओं के झंडे, परिभाषित करता है कि कौन से उपयोगकर्ता फ़ाइल की अनुमतियों को बदलते हैं।

  • u - फ़ाइल के मालिक। g - वे उपयोगकर्ता जो समूह के सदस्य हैं। o - अन्य सभी उपयोगकर्ता। a - सभी उपयोगकर्ता, जो समान है।

यदि उपयोगकर्ताओं के ध्वज को छोड़ दिया जाता है, तो डिफ़ॉल्ट एक है और umask द्वारा निर्धारित अनुमतियाँ प्रभावित नहीं होती हैं।

झंडे का दूसरा सेट ( ), ऑपरेशन के झंडे, परिभाषित करता है कि क्या अनुमतियों को हटाया, जोड़ा या सेट किया जाना है:

  • - निर्दिष्ट अनुमतियाँ निकालता है। + निर्दिष्ट अनुमतियाँ जोड़ता है। = वर्तमान अनुमतियों को निर्दिष्ट अनुमतियों में बदलता है। यदि = चिह्न के बाद कोई अनुमति निर्दिष्ट नहीं की जाती है, तो निर्दिष्ट उपयोगकर्ता वर्ग की सभी अनुमतियां हटा दी जाती हैं।

अनुमतियाँ (अनुमति perms… ) स्पष्ट रूप से शून्य या एक या एक से अधिक अक्षरों का उपयोग करके सेट की जा सकती हैं: r , w , x , X , s , और t । एक से दूसरे यूजर्स क्लास में परमिशन कॉपी करते समय सेट u , g और o से एक अक्षर का उपयोग करें।

एक से अधिक उपयोगकर्ता वर्गों के लिए अनुमतियाँ सेट करते समय ( ), प्रतीकात्मक मोड को अलग करने के लिए अल्पविराम (रिक्त स्थान के बिना) का उपयोग करें।

नीचे कुछ उदाहरण दिए गए हैं कि प्रतीकात्मक मोड में chmod कमांड का उपयोग कैसे करें:

  • समूह के सदस्यों को फ़ाइल पढ़ने की अनुमति दें, लेकिन इसे लिखने और निष्पादित करने के लिए नहीं:

    chmod g=r filename

    सभी उपयोगकर्ताओं के लिए निष्पादन अनुमति निकालें:

    chmod ax filename

    अन्य उपयोगकर्ताओं के लिए लिखित अनुमति रद्द करें:

    chmod -R ow dirname

    फ़ाइल के स्वामी को छोड़कर सभी उपयोगकर्ताओं के लिए पढ़ने, लिखने और अनुमति को निष्पादित करें:

    chmod og-rwx filename

    निम्नलिखित रूप का उपयोग करके भी यही काम पूरा किया जा सकता है:

    chmod og= filename

    फ़ाइल के स्वामी को पढ़ने, लिखने और निष्पादन की अनुमति दें, फ़ाइल के समूह के लिए अनुमतियाँ पढ़ें और अन्य सभी उपयोगकर्ताओं को कोई अनुमति न दें:

    chmod u=rwx, g=r, o= filename

    फ़ाइल के स्वामी की अनुमतियों को फ़ाइल के समूह के सदस्यों के पास उन अनुमतियों में जोड़ें:

    chmod g+u filename

    किसी दिए गए निर्देशिका में एक चिपचिपा बिट जोड़ें:

    chmod o+t dirname

संख्यात्मक विधि

संख्यात्मक विधि का उपयोग करते समय chmod कमांड का सिंटैक्स निम्न प्रारूप होता है:

chmod NUMBER FILE…

संख्यात्मक मोड का उपयोग करते समय, आप एक ही समय में सभी तीन उपयोगकर्ता वर्गों (स्वामी, समूह और अन्य सभी) के लिए अनुमतियाँ सेट कर सकते हैं।

NUMBER एक 3 या 4-अंकीय संख्या हो सकती है।

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

प्रत्येक लिखने, पढ़ने और अनुमतियों को निष्पादित करने के लिए निम्नलिखित संख्या मूल्य होता है:

  • r (पढ़ें) = 4 w (लिखना) = 2 x (निष्पादित) = 1no अनुमतियाँ = 0

किसी विशिष्ट उपयोगकर्ता वर्ग की अनुमतियों की संख्या को उस समूह के लिए अनुमतियों के मान द्वारा दर्शाया जाता है।

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

  • स्वामी: rwx = 4 + 2 + 1 = 7 समूह: rx = 4 + 0 + 1 = 5 पंख: rx = 4 + 0 + 0 = 4

उपरोक्त विधि का उपयोग करके हम संख्या 754 तक आते हैं, जो वांछित अनुमतियों का प्रतिनिधित्व करता है।

setgid , setgid और sticky bit फ्लैग को सेट करने के लिए चार अंकों की संख्या का उपयोग किया जाता है।

जब 4 अंकों की संख्या का उपयोग किया जाता है, तो पहले अंक का निम्नलिखित अर्थ होता है:

  • setuid = 4setgid = 2sticky = 1 कोई परिवर्तन = 0

अगले तीन अंकों का वही अर्थ है जब 3 अंकों की संख्या का उपयोग किया जाता है।

यदि पहला अंक 0 है तो इसे छोड़ा जा सकता है, और मोड को 3 अंकों के साथ दर्शाया जा सकता है। संख्यात्मक मोड 0755 755 के समान है।

संख्यात्मक मोड की गणना करने के लिए आप एक अन्य विधि (बाइनरी विधि) का उपयोग कर सकते हैं, लेकिन यह थोड़ा अधिक जटिल है। 4, 2 और 1 का उपयोग करके संख्यात्मक मोड की गणना करने का तरीका जानना अधिकांश उपयोगकर्ताओं के लिए पर्याप्त है।

आप सांख्यिक अंकन में फ़ाइल की अनुमति को stat कमांड का उपयोग करके देख सकते हैं:

stat -c "%a" filename

644

न्यूमेरिक मोड में chmod कमांड का उपयोग करने के कुछ उदाहरण इस प्रकार हैं:

  • फ़ाइल के स्वामी को अनुमतियाँ पढ़ें और लिखें और समूह के सदस्यों और अन्य सभी उपयोगकर्ताओं को अनुमतियाँ पढ़ें:

    chmod 644 dirname

    फ़ाइल के स्वामी को अनुमतियाँ पढ़ें, लिखें और निष्पादित करें, समूह के सदस्यों को अनुमतियाँ पढ़ें और निष्पादित करें और अन्य सभी उपयोगकर्ताओं को कोई अनुमति न दें:

    chmod 750 dirname

    पढ़ने, लिखने, और अनुमतियों को निष्पादित करने के लिए, और दी गई निर्देशिका के लिए एक चिपचिपा सा दे:

    chmod 1777 dirname

    किसी फ़ाइल निर्देशिका के लिए अनुमतियों को पढ़ने, लिखने और निष्पादित करने के लिए पुनरावर्ती सेट करें और किसी दिए गए निर्देशिका पर अन्य सभी उपयोगकर्ताओं के लिए कोई अनुमति न दें:

    chmod -R 700 dirname

एक संदर्भ फ़ाइल का उपयोग करना

--reference=ref_file विकल्प आपको निर्दिष्ट संदर्भ फ़ाइल ( ref_file ) के समान फ़ाइल की अनुमतियाँ सेट करने की अनुमति देता है।

chmod --reference=REF_FILE FILE

उदाहरण के लिए, निम्न कमांड file1 की अनुमतियों को file2 असाइन करेगा

chmod --reference=file1 file2

फ़ाइल की अनुमतियाँ पुनरावर्ती रूप से बदलें

दिए गए निर्देशिका के तहत सभी फ़ाइलों और निर्देशिकाओं पर पुनरावर्ती कार्य करने के लिए, -R ( --recursive ) विकल्प का उपयोग करें:

chmod -R MODE DIRECTORY

उदाहरण के लिए, सभी फ़ाइलों और उपनिर्देशिकाओं की अनुमतियों को बदलने के लिए /var/www निर्देशिका के तहत 755 आप उपयोग करेंगे:

chmod -R 755 /var/www

प्रतीकात्मक लिंक पर कार्य करना

प्रतीकात्मक लिंक में हमेशा 777 अनुमतियां होती हैं।

डिफ़ॉल्ट रूप से, जब सिमलिंक की अनुमतियां बदल रही हैं, तो chmod उस फ़ाइल की अनुमतियों को बदल देगा, जिस लिंक को इंगित कर रहा है।

chmod 755 symlink

संभावना है कि लक्ष्य के स्वामित्व को बदलने के बजाय, आपको "सिम्लिंक का उपयोग नहीं किया जा सकता है: अनुमति अस्वीकृत" त्रुटि।

त्रुटि तब होती है क्योंकि अधिकांश लिनक्स वितरणों पर डिफ़ॉल्ट रूप से सिमिलिंक सुरक्षित होते हैं, और आप लक्ष्य फ़ाइलों पर काम नहीं कर सकते। यह विकल्प /proc/sys/fs/protected_symlinks में निर्दिष्ट /proc/sys/fs/protected_symlinks 1 मतलब सक्षम और 0 विकलांग है। यह अनुशंसा की जाती है कि सिमलिंक सुरक्षा को अक्षम न करें।

थोक में फ़ाइल अनुमतियाँ बदलना

कभी-कभी ऐसी परिस्थितियाँ होती हैं जहाँ आपको फ़ाइलों और निर्देशिकाओं की अनुमतियों को बदलने की आवश्यकता होती है।

सबसे आम परिदृश्य पुनरावृत्ति को वेबसाइट फ़ाइल की अनुमतियों को 644 बदलना और निर्देशिका की अनुमतियों को 755 बदलना है।

संख्यात्मक पद्धति का उपयोग करना:

find /var/www/my_website -type d -exec chmod 755 {} ; find /var/www/my_website -type f -exec chmod 644 {} ;

प्रतीकात्मक विधि का उपयोग करना:

find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ; find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;

खोज आदेश /var/www/my_website तहत फ़ाइलों और निर्देशिकाओं के लिए खोज करेगा और अनुमतियों को सेट करने के लिए chmod कमांड में प्रत्येक मिली फ़ाइल और निर्देशिका को पास करेगा।

निष्कर्ष

chmod कमांड फाइल की परमिशन को बदल देता है। अनुमतियाँ प्रतीकात्मक या संख्यात्मक मोड का उपयोग करके सेट की जा सकती हैं।

chmod बारे में अधिक जानने के लिए chmod मैन पेज पर जाएँ।

चामोद टर्मिनल