UNIX अनुमतियों और फ़ाइल प्रकारों को समझना


68

मैं वास्तव में कभी नहीं मिला कि chmodआज तक कैसे काम किया है। मैंने एक ट्यूटोरियल का अनुसरण किया जिसने मुझे एक बड़ी बात बताई।

उदाहरण के लिए, मैंने पढ़ा है कि आपको तीन अलग-अलग अनुमति समूह मिले हैं:

  • मालिक ( u)
  • समूह ( g)
  • हर कोई ( o)

इन तीन समूहों के आधार पर, अब मुझे पता है कि:

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

मैंने यह भी जान लिया है कि आपको निम्नलिखित अनुमतियां मिल गई हैं:

  • पढ़ें ( r)
  • लिखना ( w)
  • निष्पादित ( x)

मैंने अपने नए अर्जित ज्ञान का परीक्षण करने के लिए एक निर्देशिका बनाई:

mkdir test

फिर मैंने कुछ परीक्षण किए:

chmod u+rwx test/
# drwx------
chmod g+rx test/
# drwxr-x---
chmod u-x test/
# drw-r-x---

कुछ समय के लिए चारों ओर बेवकूफ बनाने के बाद मुझे लगता है कि मुझे आखिरकार chmodऔर जिस तरह से आपने इस आदेश का उपयोग करने की अनुमति दी है, वह लटका हुआ है ।


परंतु...

मेरे पास अभी भी कुछ प्रश्न हैं:

  • dशुरुआत में क्या होता है ?
  • युक्त स्लॉट का नाम और उपयोग क्या है और यह किन अन्य मूल्यों को धारण कर सकता है?
  • मैं इसे कैसे सेट और अनसेट कर सकता हूं?
  • इसके लिए मूल्य क्या है d? (जैसा कि आपके पास केवल 7 = 4 + 2 + 1 7 = 4 + 2 + 1 7 = 4 + 2 + 1)
  • लोग अपनी अनुमतियां सेट करने के 0777बजाय कभी-कभी उपयोग क्यों करते हैं 777?

लेकिन जैसा कि मुझे कई प्रश्न नहीं पूछने चाहिए, मैं इसे एक प्रश्न में पूछने की कोशिश करूंगा।

यूनिक्स आधारित प्रणाली में, जैसे कि सभी लिनक्स वितरण, अनुमतियों के विषय में, पहला भाग ( d) क्या है और अनुमतियों के इस भाग के लिए क्या उपयोग है?


3
कृपया अगली बार केवल एक ही प्रश्न पूछने का प्रयास करें, बहुवैकल्पिक प्रश्न आमतौर पर संदर्भित करने के लिए खराब होते हैं और लगभग सभी को एक ही समय में संबोधित नहीं किया जाता है।
कीवी

1
@ कीवी आई एम सॉरी, मैंने सोचा कि मैं इसे इस तरह करूंगा क्योंकि यह एक ही विषय पर चिंता करता है। यदि आप चाहें, तो आप मेरे प्रश्न के संदर्भ में सुधार करने के लिए बेहतर शीर्षक सुझा सकते हैं।
पीटर

1
संयोग से, "डी" का मूल्य 040000 है - यह नाम के तहत हेडर फ़ाइलों में पाया जा सकता है S_IFDIR। फ़ाइल मोड सेट करते समय आप इसका उपयोग नहीं करते हैं, लेकिन stat()फ़ंक्शन वास्तव में 040750 के लिए मान लौटाता है drwxr-x---
रैंडम 832

2
@jamesqf वास्तव में, अब जब मैं समझता हूं कि ऑक्टल कोड कैसे मैप करते हैं, तो मेरे लिए उस तरीके के बारे में सोचना सरल है।
HalosGhost

4
@ पेटर: कोई बेवकूफ सवाल नहीं है - सिर्फ बेवकूफ जो नहीं सीखते क्योंकि वे पूछने से डरते हैं।
मर्गिसिसेया

जवाबों:


117

मैं आपके प्रश्नों का उत्तर तीन भागों में दूंगा: विभिन्न प्रकारों के लिए फ़ाइल प्रकार, अनुमतियां और मामलों का उपयोग करें chmod

फ़ाइल प्रकारों

ls -lआउटपुट में पहला वर्ण फ़ाइल प्रकार का प्रतिनिधित्व करता है; dइसका मतलब है कि यह एक निर्देशिका है। इसे सेट या अनसेट नहीं किया जा सकता, यह इस बात पर निर्भर करता है कि फ़ाइल कैसे बनाई गई थी। आप ls प्रलेखन में फ़ाइल प्रकारों की पूरी सूची पा सकते हैं ; जिन्हें आप आने की संभावना रखते हैं, वे हैं

  • -: "नियमित" फ़ाइल, किसी भी प्रोग्राम के साथ बनाई गई जो एक फ़ाइल लिख सकती है
  • b: विशेष फ़ाइल, आमतौर पर डिस्क या विभाजन उपकरणों को ब्लॉक करें, के साथ बनाया जा सकता है mknod
  • c: चरित्र विशेष फ़ाइल, के साथ भी बनाया जा सकता है mknod( /devउदाहरण के लिए देखें )
  • d: निर्देशिका, के साथ बनाया जा सकता है mkdir
  • l: प्रतीकात्मक लिंक, के साथ बनाया जा सकता है ln -s
  • p: नामित पाइप, के साथ बनाया जा सकता है mkfifo
  • s: सॉकेट, के साथ बनाया जा सकता है nc -U
  • D: दरवाजा , सोलारिस / ओपनइंडियाना पर कुछ सर्वर प्रक्रियाओं द्वारा बनाया गया।

अनुमतियां

chmod 0777एक chmodनिष्पादन में सभी अनुमतियों को सेट करने के लिए उपयोग किया जाता है , u+आदि के साथ परिवर्तन के संयोजन के बजाय चार अंकों में से प्रत्येक एक ऑक्टल मान है जो अनुमतियों के सेट का प्रतिनिधित्व करता है:

  • suid, sgidऔर "चिपचिपा" (नीचे देखें)
  • उपयोगकर्ता की अनुमति
  • समूह की अनुमति
  • "अन्य" अनुमति

ऑक्टल मान की गणना अनुमतियों के योग के रूप में की जाती है:

  • "पढ़ा" 4 है
  • "लिखना" 2 है
  • "निष्पादित" 1 है

पहले अंक के लिए:

  • suid4 है; इस सेट के साथ बायनेरिज़ उनके मालिक उपयोगकर्ता (आमतौर पर root) के रूप में चलते हैं
  • sgid2 है; इस बिट सेट के साथ बायनेरिज़ उनके मालिक समूह के रूप में चलते हैं (यह गेम के लिए उपयोग किया जाता था ताकि उच्च स्कोर को साझा किया जा सके, लेकिन यह अक्सर सुरक्षा जोखिम होता है जब गेम में कमजोरियों के साथ जोड़ दिया जाता है), और इस बिट सेट के साथ निर्देशिकाओं में बनाई गई फाइलें संबंधित हैं डिफ़ॉल्ट रूप से निर्देशिका का स्वामी समूह (यह साझा फ़ोल्डर बनाने के लिए आसान है)
  • "चिपचिपा" (या "प्रतिबंधित विलोपन") 1 है; इस बिट सेट के साथ निर्देशिकाओं में फ़ाइलें केवल उनके स्वामी, निर्देशिका के स्वामी, या root( /tmpइस के एक सामान्य उदाहरण के लिए देखें ) द्वारा ही हटाई जा सकती हैं ।

देखें मैनपेज जानकारी के लिए। ध्यान दें कि इस सब में मैं अन्य सुरक्षा विशेषताओं को अनदेखा कर रहा हूँ, जो उपयोगकर्ताओं की फाइलों (SELinux, फ़ाइल ACLs ...) पर अनुमतियाँ बदल सकती हैं।chmod

विशेष बिट्स को फ़ाइल के प्रकार (नियमित फ़ाइल या निर्देशिका) और अंतर्निहित सिस्टम के आधार पर अलग-अलग संभाला जाता है। (इसका उल्लेख chmodमैनपेज में किया गया है ।) सिस्टम पर मैंने इसका परीक्षण किया ( फाइल सिस्टम coreutilsपर 8.23 ​​के साथ ext4, लिनक्स कर्नेल 3.16.7-ckt2 चलाने पर), व्यवहार निम्नानुसार है। किसी फ़ाइल के लिए, विशेष बिट्स को हमेशा साफ़ किया जाता है जब तक कि स्पष्ट रूप से सेट न हो, इसलिए chmod 0777इसके बराबर है chmod 777, और दोनों कमांड विशेष बिट्स को साफ़ करते हैं और सभी को फ़ाइल पर पूर्ण अनुमति देते हैं। एक निर्देशिका के लिए, विशेष बिट्स को चार-अंकीय संख्यात्मक रूप का उपयोग करके कभी भी पूरी तरह से साफ नहीं किया जाता है, इसलिए प्रभाव chmod 0777भी इसके बराबर हैchmod 777लेकिन यह भ्रामक है क्योंकि कुछ विशेष बिट्स जैसे ही रहेंगे। (इस उत्तर के एक पिछले संस्करण को यह गलत मिला।) निर्देशिकाओं पर विशेष बिट्स को साफ़ करने के लिए u-s, g-sऔर / या o-tस्पष्ट रूप से या एक नकारात्मक संख्यात्मक मान निर्दिष्ट करने की आवश्यकता है , इसलिए chmod -7000एक निर्देशिका पर सभी विशेष बिट्स को साफ़ करें।

में ls -lउत्पादन, suid, sgidऔर "स्टिकी" के स्थान पर दिखाई xप्रविष्टि: suidहै sया Sउपयोगकर्ता के के बजाय x, sgidहै sया Sसमूह के के बजाय x, और "स्टिकी" है tया Tदूसरों के बजाय ' x। एक लोअर-केस पत्र इंगित करता है कि दोनों विशेष बिट और निष्पादन योग्य बिट सेट हैं; एक ऊपरी-केस पत्र इंगित करता है कि केवल विशेष बिट सेट है।

चामोद के विभिन्न रूप

ऊपर वर्णित व्यवहार के कारण, पूर्ण चार अंकों का chmodउपयोग करना भ्रमित हो सकता है (कम से कम यह पता चला है कि मैं भ्रमित था)। यह उपयोगी है जब आप विशेष बिट्स और साथ ही अनुमति बिट्स सेट करना चाहते हैं; यदि आप किसी निर्देशिका में हेरफेर कर रहे हैं तो संरक्षित किए जाने पर अन्यथा बिट्स को हटा दिया जाता है। तो chmod 2750यह सुनिश्चित करता है कि आपको कम से कम sgidऔर बिल्कुल मिलेगा u=rwx,g=rx,o=; लेकिन chmod 0750जरूरी नहीं कि विशेष बिट्स को साफ करें।

पाठ कमांड ( [ugo][=+-][rwxXst]) के बजाय संख्यात्मक मोड का उपयोग करना संभवतः अधिक आदत और कमांड के उद्देश्य का मामला है। एक बार जब आप संख्यात्मक मोड का उपयोग करने के लिए उपयोग किए जाते हैं, तो इस तरह से पूर्ण मोड को निर्दिष्ट करना अक्सर आसान होता है; और यह, आंकिक साधनों का उपयोग करते अनुमतियों के बारे में सोच करने में सक्षम होना उपयोगी है के बाद से कई अन्य आदेशों उन्हें (उपयोग कर सकते हैं install, mknod...)।

कुछ टेक्स्ट वेरिएंट काम में आ सकते हैं: यदि आप यह सुनिश्चित करना चाहते हैं कि किसी फ़ाइल को किसी के द्वारा निष्पादित किया जा सकता है, chmod a+xतो वह ऐसा करेगा, भले ही अन्य अनुमतियां क्या हों। इसी तरह, +Xनिष्पादित अनुमति को केवल तभी जोड़ता है जब निष्पादित अनुमतियों में से एक पहले से ही सेट है या फ़ाइल एक निर्देशिका है; यह विशेष केस फाइल वी निर्देशिका के बिना विश्व स्तर पर अनुमति बहाल करने के लिए आसान हो सकता है। इस प्रकार, सभी निर्देशिकाओं और निष्पादन योग्य फ़ाइलों और अन्य सभी फाइलों chmod -R ug=rX,u+w,o=पर लागू chmod -R 750होने के बराबर है chmod -R 640


हालाँकि, अन्य उत्तर बहुत अच्छे थे, आपने वास्तव में इस प्रश्न का उत्तर देने में कुछ समय बिताया। धन्यवाद।
पीटर

पर * बीएसडी निर्देशिकाएं ऐसा व्यवहार करती हैं जैसे कि उनका sgidबिट हमेशा वास्तविक मूल्य की परवाह किए बिना सेट किया गया था। FreeBSD पर suidबिट को एनलॉग तरीके से कार्य करने के लिए कॉन्फ़िगर किया जा सकता है sgid(अर्थात फ़ाइलों और उपनिर्देशिकाओं के अंदर डायरेक्टरी जैसा ही मालिक होगा), बशर्ते कि अंतर्निहित फाइलसिस्टम उस का समर्थन करता है, और suiddirविकल्प के साथ मुहिम की जाती है।
lcd047

" +Xनिष्पादित अनुमति को केवल तभी जोड़ता है जब निष्पादित अनुमतियों में से एक पहले से ही सेट है या फ़ाइल एक निर्देशिका है" धन्यवाद @ स्टीफन-किट गायब है "पहले से ही सेट है" प्रलेखन वास्तव में मुझे एक लूप के लिए फेंक रहा था!
रयान फिशर

39

तो, लिनक्स में अनुमतियाँ बहुत महत्वपूर्ण हैं। मैं एक छोटी व्याख्या करने की कोशिश करूंगा।

एक फ़ाइल मोड के टुकड़ों के लिए

हर यूनिक्स फ़ाइल में अनुमतियों का एक समूह होता है जो निर्धारित करता है कि आप फ़ाइल को पढ़, लिख या चला सकते हैं। रनिंग ls -l अनुमतियाँ प्रदर्शित करता है। इस तरह के प्रदर्शन का एक उदाहरण है:

-rw-r--r-- 1 user somegroup 7041 Mar 26 19:34 somefile

मैं फ़ाइल मोड के टुकड़ों की एक छवि संलग्न करता हूं:

यहाँ छवि विवरण दर्ज करें

टाइप अलग चीज हो सकती है। उदाहरण के लिए:

  • डी (निर्देशिका)
  • सी (चरित्र डिवाइस)
  • l (सिमलिंक)
  • पी (नामित पाइप)
  • s (सॉकेट)
  • बी (ब्लॉक डिवाइस)
  • D (लिनक्स सिस्टम पर आम नहीं है, लेकिन पोर्ट किया गया है)

यदि आप सभी निर्देशिका के लिए कुछ अनुमतियाँ सेट करना चाहते हैं, तो आप R विशेषता का उपयोग कर सकते हैं, उदाहरण के लिए:

chmod -R 777 /some/directory/

चामोद 777 बनाम 0777 के लिए

chmodआदेश आम तौर पर उम्मीद इनपुट किसी ऑक्टल संख्या होने के लिए, आगे शून्य चिपचिपा / sgid / SUID बिट त्रिक का मूल्य को दर्शाता है। सी में, हालांकि, यह एक अंतर 777होगा , चूंकि इसका अनुवाद 01411(अष्टक) किया जाएगा, इस प्रकार चिपचिपा बिट सेट करना ( chmod(2)मैन पेज देखें ), स्वामी के लिए अनुमतियाँ पढ़ें और समूह और अन्य के लिए निष्पादन योग्य बिट (जो एक अजीब संयोजन है) ।

EDIT 1

मुझे लिनक्स अनुमतियों के बारे में अन्य तस्वीर मिली और मैं इसे और अधिक आसान समझने के लिए संलग्न करूंगा: UNIX फ़ाइल अनुमतियां


5
आप 777 बनाम 0777 के बारे में गलत हैं। दोनों अष्टक हैं (दशमलव इस मामले में वैसे भी कोई मतलब नहीं है), लेकिन चार-वर्ण रूप में, पहला अंक विशेष बिट्स (चिपचिपा और सेटिड) सेट करता है।
ओरियन

3
@orion कभी-कभी यह वास्तव में सच होता है, जैसे कि सी-सी कोड में chmod(777)वास्तव में चलने के बराबर होगा chmod 1411(यानी chmodतर्क के साथ कमांड 1411)।
पेट्रफ

2
... जो कि syscall (या उसके आवरण) और बाइनरी नाम के मामले में थोड़ा भ्रमित करने वाला हो सकता है।
पेट्रोफ

3
पायथन मास्टर रेस ने 0 से शुरू होने वाली सभी "संख्याओं" पर प्रतिबंध लगाकर इस बैकवर्ड समस्या को हल किया, उपयोगकर्ता को यह स्पष्ट करने के लिए मजबूर किया कि क्या वे दशमलव के अलावा कुछ भी चाहते हैं, जैसे हेक्स:, 0x1FFबाइनरी: 0b111111111या ऑक्टल 0o777:। पीथॉन पावर
निक टी

चित्र स्रोत?
रग्क

10

dइसका मतलब यह है कि यह एक निर्देशिका है, अगर आपके पास एक फ़ाइल है -और यदि यह एक लिंक है तो आप पाएंगे l। इसे सेट / अनसेट नहीं किया जा सकता।

यदि आप 0777 का उपयोग उन अनुमतियों के रूप में कर रहे हैं जो आप सिस्टम के प्रत्येक उपयोगकर्ता / समूह को पूर्ण नियंत्रण (पढ़ें + लिखना + निष्पादित करना) दे रहे हैं। जब आप उपयोगकर्ताओं / समूहों को निर्देशिकाओं / फ़ाइलों तक नहीं पहुँच सकते हैं, तो समस्याओं को हल करने के लिए यह एक आलसी तरीका है।

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

-rw-r--r-- 1 root root 42596 jun 7 2012 preloadable_libintl.so

preloadable_libintl.so उपयोगकर्ता रूट और समूह रूट के स्वामित्व वाली फ़ाइल है। मालिक पढ़ने और लिखने की है, समूह रीड ओनली पहुंच गया है और किसी भी अन्य उपयोगकर्ता पहुँच पढ़ा है। इसका अनुवाद 644 के रूप में किया जा सकता है।

अगर मैं इसे 777 में बदल दूं तो यह इस तरह दिखेगा:

-rwxrwxrwx 1 root root 42596 jun 7 2012 preloadable_libintl.so


7

मेरे प्रश्न का उत्तर देने के बाद और परिणाम के बारे में कुछ शोध करने के बाद मुझे एक लेख मिला, जो इसे बहुत अच्छी तरह से समझाता है। मैं इस लेख के कुछ हिस्सों को भविष्य के संदर्भों के लिए यहां साझा करना चाहूंगा।

अनुमति देखना

chmodकिसी फ़ाइल या निर्देशिका की अनुमतियों को बदलने के लिए उपयोग करने के लिए, आपको सबसे पहले यह जानना होगा कि वर्तमान पहुँच का तरीका क्या है। आप cdउस निर्देशिका द्वारा टर्मिनल में निर्देशिका की सामग्री देख सकते हैं और फिर उपयोग कर सकते हैं:

$ ls -l

-lस्विच महत्वपूर्ण है क्योंकि उपयोग कर रहा है lsइसके बिना ही निर्देशिका में फ़ाइल या फ़ोल्डर का नाम प्रदर्शित करेगा।

नीचे ls -lमेरी होम निर्देशिका पर उपयोग करने का एक उदाहरण है :

total 128
drwxr-xr-x 2 peter users  4096 Jul  5 21:03 Desktop
drwxr-xr-x 6 peter users  4096 Jul  5 17:37 Documents
drwxr-xr-x 2 peter users  4096 Jul  5 13:45 Downloads
drwxr-xr-x 2 peter users  4096 Jun 24 03:36 Movies
drwxr-xr-x 2 peter users  4096 Jun 24 03:38 Music
drwxr-xr-x 2 peter users  4096 Jun 26 00:09 Pictures
-rw-r--r-- 1 peter users   354 Jul  6 17:15 chmodtest

कॉलम का क्या मतलब है

पहला कॉलम प्रत्येक फ़ाइल का प्रकार है:

  • - एक सामान्य फ़ाइल को दर्शाता है।
  • d एक निर्देशिका को निरूपित करता है, अर्थात अन्य फ़ाइलों या फ़ोल्डरों वाला एक फ़ोल्डर।
  • p एक नामित पाइप (उर्फ फीफो) को दर्शाता है।
  • l एक प्रतीकात्मक लिंक को दर्शाता है।

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

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

परमिशन का क्या मतलब है

पहले तीन अक्षर, पहले -या बाद में d, स्वामी के पास अनुमतियाँ हैं। अगले तीन अक्षर अनुमतियाँ हैं जो समूह पर लागू होती हैं। अंतिम तीन पत्र अनुमतियाँ हैं जो सभी पर लागू होती हैं।

तीन अक्षरों के प्रत्येक सेट से बना है r wऔर xrहमेशा पहली स्थिति में है, wहमेशा दूसरी स्थिति में है, और xहमेशा तीसरे स्थान पर है। rपढ़ने की अनुमति है, wलिखने की अनुमति है, और xनिष्पादन की अनुमति है। यदि -इन पत्रों में से एक के स्थान पर एक हाइफ़न ( ) है तो इसका अर्थ है कि अनुमति नहीं दी गई है, और यदि पत्र मौजूद है तो उसे प्रदान किया जाता है।

फ़ोल्डर

फ़ोल्डरों के मामले में मोड बिट्स की व्याख्या इस प्रकार की जा सकती है:

  • r (पढ़े) दिए गए डायरेक्टरी के कंटेंट की तालिका को पढ़ने की क्षमता के लिए है,
  • w(लिखना) दिए गए निर्देशिका की सामग्री की तालिका लिखने की क्षमता के लिए खड़ा है (नई फ़ाइलें, फ़ोल्डर्स बनाएँ; नाम बदलें, मौजूदा फ़ाइलों को हटाएं, फ़ोल्डर्स) अगर और केवल अगर निष्पादित बिट सेट है। अन्यथा, यह अनुमति निरर्थक है।
  • x (निष्पादित) उस निर्देशिका में कमांड सीडी और एक्सेस फ़ाइलों, फ़ोल्डरों के साथ दी गई निर्देशिका में प्रवेश करने की क्षमता के लिए खड़ा है।

चामोद कमांड का उपयोग करके अनुमतियाँ बदलना

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

आप अनुमतियों को दो अलग-अलग तरीकों से बदल सकते हैं: - पाठ-आधारित chmod - संख्या-आधारितchmod

पाठ विधि

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

chmod who=permissions filename

कहां कौन पत्र की एक सीमा से है, और प्रत्येक यह दर्शाता है कि आप किसे अनुमति देने जा रहे हैं। वे इस प्रकार हैं:

u - The user that owns the file.
g - The group the file belongs to.
o - The other users i.e. everyone else.
a - all of the above - use this instead of having to type ugo.

अनुमतियाँ ही के रूप में पहले से ही चर्चा कर रहे हैं ( r, w, और x)।

Chmod कमांड हमें मौजूदा सेट से + के बजाय + या - का उपयोग करके अनुमतियाँ जोड़ने और घटाने देता है। यह ऊपर बताए गए आदेशों, जो अनिवार्य रूप अनुमतियों को फिर से लिखने के लिए अलग है (यानी से एक अनुमति बदलने के लिए r--करने के लिए rw-, आप अभी भी शामिल करने की जरूरत rहै और साथ ही wबाद =में chmodआदेश। आप से चूक गए हैं r, इसे दूर ले जाएगा rके रूप में अनुमति उन्हें = के साथ फिर से लिखा जा रहा है। + और - इसे अनुमतियों के वर्तमान सेट से जोड़ने या दूर ले जाने से बचें)।

संख्या विधि

chmod संख्याओं का उपयोग करके अनुमतियाँ भी सेट कर सकते हैं।

संख्याओं का उपयोग करना एक अन्य विधि है जो आपको एक ही समय में सभी तीन मालिक, समूह और अन्य के लिए अनुमतियों को संपादित करने की अनुमति देती है। कोड की यह मूल संरचना यह है:

chmod xxx file/directory

जहां xxx एक 3 अंकों की संख्या है, जहां प्रत्येक अंक 1 से 7. तक कुछ भी हो सकता है। पहला अंक स्वामी के लिए अनुमतियों पर लागू होता है, दूसरा अंक समूह के लिए अनुमतियों पर लागू होता है, और तीसरा अंक अन्य सभी के लिए अनुमतियों पर लागू होता है।

इस संख्या संकेतन में, r, w और x के मानों की अपनी संख्या मान है:

r=4
w=2
x=1

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

Owner: rwx = 4+2+1=7
Group: r-x = 4+0+1=5 (or just 4+1=5)
Other: r-x = 4+0+1=5 (or just 4+1=5)

Final number = 755

$ chmod 755 filename

यह निम्नलिखित का उपयोग करने के बराबर है:

chmod u=rwx filename
chmod go=rx filename

अधिकांश फ़ोल्डरों / निर्देशिकाओं को स्वामी को पढ़ने और लिखने और निष्पादन की अनुमति देने के लिए 755 पर सेट किया जाता है, लेकिन बाकी सभी को लिखने से इनकार करते हैं, और फाइलें मालिक के लिए पढ़ने और लिखने की अनुमति देने के लिए आम तौर पर 644 हैं, लेकिन बाकी सभी के लिए पढ़ने के लिए, अंतिम का संदर्भ लें गैर निष्पादन योग्य फ़ाइलों के साथ x अनुमतियों की कमी पर ध्यान दें - यहाँ एक ही सौदा।


बस एक और लेख से पाठ की नकल है - कम से कम - अशिष्ट। शायद कॉपीराइट उल्लंघन भी। यदि यह केवल प्रतिलिपि नहीं है या आपने वास्तव में छोटे भागों (उचित उपयोग के लिए कॉपीराइट-अनुकूल धन्यवाद) का उपयोग किया है, तो कृपया कम से कम उस लेख के लिए एक लिंक जोड़ें जिसे आप संदर्भित कर रहे हैं / उद्धृत कर रहे हैं।
23

0

D प्रश्नों के लिए

यह आपको यूनिक्स फ़ाइल प्रकार बताता है। डिफ़ॉल्ट रूप से यूनिक्स में केवल 3 प्रकार की फाइलें हैं। वो हैं:

  • - - नियमित फाइल
  • d - निर्देशिका फ़ाइल
  • विशेष फ़ाइल (5 उप-प्रकार के साथ):
    • b - ब्लॉक फ़ाइल
    • c - चरित्र डिवाइस फ़ाइल
    • p - नामांकित पाइप फ़ाइल या सिर्फ पाइप फ़ाइल
    • l - प्रतीकात्मक लिंक फ़ाइल
    • s - सॉकेट फ़ाइल

यहाँ और पढ़ें: लिनक्स / यूनिक्स में फ़ाइल प्रकारों के बारे में विस्तार से बताया गया है

0777 बनाम 777

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

0777 777 फ़ाइल अनुमतियाँ सेट करता है, और 0 से चिपचिपा बिट - कोई विशेष मोड नहीं।

777 चिपचिपा बिट को बदलने के बिना 777 फ़ाइल अनुमतियाँ सेट कर रहा है।

और पढ़ें: चिपचिपा सा और चामोद


2
बेहतर: लेकिन यह अभी भी कुछ भी नहीं प्रदान करता है कि अन्य उत्तर पहले से ही कवर नहीं किए गए हैं ...
jasonwryan

1
(1) तीन मूल फ़ाइल प्रकार हैं: सादे फ़ाइलें, निर्देशिकाएं, और सब कुछ। क्या? यह आपको कहां मिल रहा है? चीजों की महान योजना में, सादे फ़ाइलें और निर्देशिकाएं समान हैं। नामांकित पाइप और प्रतीकात्मक लिंक सादे फ़ाइलों और निर्देशिकाओं की तुलना में अधिक हैं जैसे कि वे डिवाइस फ़ाइलों या सॉकेट्स की तरह हैं। (2) आपको लगता chmod 777है कि सेतुबंध, सेटगिड और चिपचिपा बिट्स को साफ नहीं करता है? कोशिश करो।
जी-मैन

यूनिक्स के 7 फ़ाइल प्रकार हैं, न कि 3.
वेजेंड्रिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.