क्या मोड मान 0777 और 777 के बीच कोई अंतर है


51

मैंने काम पर एक कोड परिवर्तन देखा, जहां nFS सेटट्रा काम करने के लिए मोड मान 777 से 0777 में बदल दिए गए थे। 2 मानों में क्या अंतर है?



इसी तरह के मुद्दे पर आया php में निर्मित FS जैसे संबंधित कार्यों का उपयोग करते हुए mkdir()0777 बनाम 777
निकेत पाठक

जवाबों:


76

यदि आप उन्हें chmod(कमांड लाइन प्रोग्राम) पास कर रहे हैं , तो कोई अंतर नहीं है। लेकिन C प्रोग्राम या समान में, 0777ऑक्टल है (तीन 1 बिट्स के तीन सेट, जो आप चाहते हैं), जबकि 777दशमलव है, और यह काफी अलग पैटर्न है। ( chmodअष्टक के रूप में किसी भी संख्यात्मक तर्क की व्याख्या करेगा, इसलिए कोई अग्रणी शून्य आवश्यक नहीं है।)

0777 (ऑक्टल) == बाइनरी 0b 111 111 111    == अनुमतियां rwxrwxrwx   (== दशमलव 511)

777 (दशमलव) == बाइनरी 0b 1 100 001 001== अनुमतियाँ sr----x--x(== ऑक्टल 1411)


14
बस स्पष्ट होने के लिए - आप chmodकमांड को पास करने वाले मान को हमेशा अष्टक के रूप में व्याख्या करते हैं। प्रयोग करने chmod 888से त्रुटि होगी।
Mattdm

लेकिन प्रत्येक अंक अष्टाधारी है, न कि पूरी संख्या।
ड्रेक क्लेरिस

1
अष्टाधारी अंकों की एक स्ट्रिंग है किसी ऑक्टल संख्या। chmodउपसर्ग की परवाह किए बिना, अंकीय के रूप में एक संख्यात्मक तर्क की व्याख्या करता है। (लेकिन वास्तव में संख्या का अपना कोई कार्य नहीं है; सिर्फ अंक, या बिट्स।)
एलेक्सिस

तो, एक सी प्रोग्राम में, यदि आप पास होना चाहते हैं, तो आपको 1777लिखना होगा 01777?
फहीम मीठा

1
@ फहीम, यह सही है। ऑक्टल सी में 1777लिखा 01777गया है (या आप लिख सकते हैं 1023, जो दशमलव में एक ही संख्या है। लेकिन :-) नहीं
एलेक्सिस

4

पहले बिट का उपयोग चिपचिपा बिट http://en.wikipedia.org/wiki/Sticky_bit के लिए किया जाता है

यदि आप 4 अंकों का उपयोग करके अनुमति सेट करते हैं, तो पहले इस बिट को सेट या हटा देगा।


3
चिपचिपा सा पहला बिट नहीं बल्कि तीसरा है। पहला suid bit है और दूसरा sgid एक है। यदि आप तीन अंकों का उपयोग करके अनुमतियाँ सेट करते हैं, तो गुम पहला अंक भी इन तीन बिट्स को प्रभावित करेगा (यानी हटाएगा)।
जुलियाग्रे

तुम सही हो। एर्गो, "एलेक्सिस द्वारा प्रदान किया गया उत्तर
लिखित है

2
@jlliagre chmod मैन पेज से - "ओजड अंक को अग्रणी शून्य माना जाता है।" साथ ही, 4 का पहला अंक चिपचिपा सा है। फिर से मैन पेज से: "पहला अंक सेट यूजर आईडी (4) और सेट ग्रुप आईडी (2) और प्रतिबंधित विलोपन या चिपचिपा (1) विशेषताओं का चयन करता है। दूसरा अंक उस उपयोगकर्ता के लिए अनुमतियों का चयन करता है जो फाइल का मालिक है: पढ़ें ( 4), लिखें (2), और निष्पादित करें (1); तीसरा फ़ाइल के समूह में अन्य उपयोगकर्ताओं के लिए अनुमतियों का चयन करता है, समान मूल्यों के साथ, और अन्य उपयोगकर्ताओं के लिए चौथा, फ़ाइल के समूह में नहीं, समान मूल्यों के साथ। "
फहीम मीठा

1
@FaheemMitha, छोड़े गए अंकों को प्रमुख शून्य माना जाता है, इस प्रकार उपरोक्त बिट्स को हटा दिया जाएगा । इसके अलावा, आप बिट्स और अंकों को भ्रमित करते हैं, मैं पहले बिट के बारे में टिप्पणी कर रहा था, पहले अंक के बारे में नहीं।
jlliagre

1
@ जलीगरे ठीक है, काफी उचित है।
फहीम मीठा

1

दिलचस्प जवाब है:

  • के बीच कोई अंतर नहीं है 0700और 700के रूप में अन्य उत्तर में बताया गया है,
  • लेकिन वहाँ है के बीच एक अंतर 00700और 0700(निर्देशिकाओं के लिए)

कम से कम जीएनयू कोरुटिल्स के चामोद संस्करण के मामले में, जो कि लिनक्स पर डिफ़ॉल्ट है।

इस उदाहरण को देखें:

$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul  8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir                   # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul  8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir                  # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul  8 09:27 mydir

यह निर्देशिका के लिए सेटिड / सेटगिड बिट्स के आकस्मिक विलोपन से बचने के लिए है। विवरण के लिए, chmod प्रलेखन देखें ।


-1

लिनक्स सिस्टम में दो प्रकार की अनुमतियाँ उपलब्ध हैं:

  1. फ़ाइल अनुमति
  2. विशेष अनुमति

फ़ाइल अनुमति में हमने फ़ाइलों और फ़ोल्डरों पर अनुमति निर्धारित की है:

अनुमतियाँ हैं:

  • पढ़ा (4)
  • लिखने (2)
  • निष्पादित (1)

जबकि विशेष अनुमति में तीन प्रकार की अनुमति है:

  • SUID (4)
  • Sgid (2)
  • स्टिकी बिट (1)

आपके प्रश्न में आप पूछते हैं कि क्या अंतर है, इसलिए कोई अंतर नहीं है chmod 777 and 0777क्योंकि वहाँ no any octal value(0) शून्य का मान है।

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