"Chmod + x" और "chmod 755" में क्या अंतर है?


61

जब यह एक फ़ाइल निष्पादन योग्य बनाने की बात आती है कि मेरे बीच क्या अंतर है chmod 755और chmod +xमैं कब और किसका उपयोग करूंगा? मैं अब तक केवल इस्तेमाल किया है chmod +xऔर मैं बस कुछ पढ़ा है और यह प्रयोग किया जाता chmod 755है और मैं नहीं बता सकता है या नहीं, इसका इस्तेमाल करने के लिए बेहतर था chmod 755या chmod +x


9
chmod +xअन्य अनुमतियों को बदलने के बिना सभी निष्पादन योग्य ध्वज सेट करता है। chmod 755rwxr-xr-x
ravery


5
@ हर: हाय वहाँ! आपने टिप्पणी अनुभाग पाया है, जो कि समालोचना और स्पष्टीकरण के लिए समर्पित क्षेत्र है। एक उत्तर / समाधान प्रदान करने के लिए, आपको नीचे दिए गए "उत्तर" अनुभाग का उपयोग करना चाहिए (बड़े लाल के लिए देखें "अपना उत्तर पोस्ट करें" बटन)। उम्मीद है की वो मदद करदे!
ऑर्बिट

जवाबों:


144

लघु संस्करण:

उनकी तुलना करने में सक्षम होने के लिए, हमें उन्हें उसी दृष्टिकोण से देखना चाहिए, इसलिए:

  • chmod +xके बराबर है chmod ugo+x( umaskमूल्य के आधार पर )
  • chmod 755 के बराबर है chmod u=rwx,go=rx

व्याख्या:

सबसे पहले आपको पता होना चाहिए कि:

  1. + इसका मतलब यह है कि फ़ाइल पहले से ही है अन्य अनुमतियों के लिए इस अनुमति जोड़ें।
  2. = मतलब सभी अनुमतियों को अनदेखा करें, उन्हें ठीक उसी तरह सेट करें जैसा मैं प्रदान करता हूं।

    • तो "रीड, राइट, एग्जीक्यूट, स्टिकी बिट, स्यूड और गाइड" सभी को नजरअंदाज कर दिया जाएगा और केवल उपलब्ध कराए गए सेट किए जाएंगे।
  3. = 4 पढ़ें, = 2 लिखें, निष्पादित करें = 1

    • इसके पीछे द्विआधारी तर्क है (यदि आप रुचि रखते हैं):

      Symbolic:  r-- -w- --x  |  421
      Binary:    100 010 001  |  -------
      Decimal:    4   2   1   |  000 = 0
                              |  001 = 1
      Symbolic:  rwx r-x r-x  |  010 = 2
      Binary:    111 101 101  |  011 = 3
      Decimal:    7   5   5   |  100 = 4
                 /   /   /    |  101 = 5
      Owner  ---/   /   /     |  110 = 6
      Group  ------/   /      |  111 = 7
      Others ---------/       |  Binary to Octal chart
      

उपयोग करके +xआप स्वामी, समूह और अन्य +को निष्पादन योग्य बिट ( x) जोड़ने के लिए कह रहे हैं।

  • यह ugo+xया के बराबर हैu+x,g+x,o+x
  • जब आप यह निर्दिष्ट नहीं करते हैं कि स्वामी, समूह या अन्य में से कौन सा आपका लक्ष्य है, तो xयह उन सभी पर विचार करेगा। जैसा कि @ रिनविंड ने बताया, यह umaskमूल्य पर आधारित है , यह बिट्स को umaskअनुमति देता है। याद रखें कि यदि आप लक्ष्य को निर्दिष्ट करते हैं, o+rतो umaskअब कोई प्रभाव नहीं पड़ता है।
  • यह अन्य मॉड्स (अनुमतियों) को नहीं छूता है।
  • आप u+xस्वामी को केवल निष्पादन योग्य बिट जोड़ने के लिए भी उपयोग कर सकते हैं ।

755आप का उपयोग कर निर्दिष्ट कर रहे हैं:

  • 7 -> u=rwx(4 + 2 + 1 मालिक के लिए)
  • 5 -> g=rx(समूह के लिए 4 + 1)
  • 5 -> o=rx(4 + 1 दूसरों के लिए)

तो chmod 755ऐसा है: chmod u=rwx,g=rx,o=rxया chmod u=rwx,go=rx

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


15
एक बहुत ही महत्वपूर्ण इसके अलावा: जब chmod 755आप उन बिट्स का उपयोग करते हैं और आप भी सभी suid / sgid / चिपचिपा बिट्स (जो कि वहाँ हो सकता है) (उदाहरण के लिए: NEVER chmod 755 /tmp) को साफ़ कर देते हैं । 755 को हमेशा 0755 के रूप में सोचा जाना चाहिए, अर्थात बिट्स का पहला ऑक्टल सेट भी 0. पर सेट होता है
ओलिवियर दुलक

1
लगभग सही एक समय से पहले +1 (या तो आपको मुझसे वह बिल्ला मिल गया:)): आप umask के बारे में भूल गए?)
Rinzwind

@OlivierDulac धन्यवाद, मैं बहुत अधिक विवरण में नहीं
आना

1
मुझे लगता है कि मैं समझ गया हूं कि कैसे अनुमतियाँ काम करती हैं, धन्यवाद!
Fabich


37

chmod +x मौजूदा अनुमति के लिए सभी उपयोगकर्ताओं के लिए निष्पादित अनुमति जोड़ता है।

chmod 755755फ़ाइल के लिए अनुमति सेट करता है ।

755 का अर्थ है मालिक के लिए पूर्ण अनुमति और दूसरों के लिए अनुमति पढ़ें और निष्पादित करें।


7

इसे देखने का एक और तरीका है (जो मुझे समझने में आसान लगता है) वह है कि chmod +xअनुमतियों को अपेक्षाकृत कम करना , जबकि chmod 755उन्हें बिल्कुल सेट करना ।

chmod 755किसी फ़ाइल पर चलने के बाद , इसकी अनुमति 755 होगी , या rwxr-xr-x

chmod +xअभी मौजूदा अनुमतियां लेगा, और फ़ाइल में निष्पादित अनुमतियाँ जोड़ें


6

मैं पूर्ण विवरण के लिए चामोद मैन पेज की समीक्षा करने की सलाह देता हूं । आप बस दो अलग-अलग ऑपरेशन मोड देख रहे हैं, जो चोमोड कमांड के साथ उपलब्ध है ताकि अनुमतियों को बदलने का समान कार्य पूरा हो सके।

ऑक्टल मोड संख्याओं का उपयोग कर रहा है और फ़ाइल की संपूर्ण अनुमतियों को सेट करता है। अक्षर मोड अक्षरों का उपयोग कर रहा है और आम तौर पर मौजूदा अनुमतियों को संशोधित करने के लिए उपयोग किया जाता है।

chmod 755अनुमतियाँ समायोजित rwxr-xr-xकरते समय सेट chmod +xकरता है ताकि स्वामी, समूह, और दुनिया सभी के पास निष्पादन योग्य अनुमतियाँ हों। एक डिफ़ॉल्ट फ़ाइल की अनुमति मानकर rwxr--r--इसे 755 के समान अनुमतियों में समायोजित कर दिया जाएगा rwxr-xr-x


5

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

आपके साथ chmod +xसभी के लिए निष्पादन योग्य बिट सेट करें - स्वामी, स्वामी समूह और अन्य उपयोगकर्ता। इसे प्रतीकात्मक विधा के रूप में जाना जाता है। उद्धृत करने के लिए man chmod:

ऑपरेटर + चयनित फ़ाइल मोड बिट्स को प्रत्येक फ़ाइल के मौजूदा फ़ाइल मोड बिट्स में जोड़ने का कारण बनता है; - उन्हें हटाने का कारण बनता है; और = उन्हें जोड़ने का कारण बनता है और एक निर्देशिका के असंबद्ध सेट उपयोगकर्ता और समूह आईडी बिट्स प्रभावित नहीं होते हैं सिवाय इसके कि बिना हटाए गए बिट्स का कारण बनता है।

साथ chmod 755आप ऑक्टल अंक का उपयोग कर रहे हैं, जिनमें से द्विआधारी प्रतिनिधित्व अनुमतियों के विशिष्ट बिट्स सेट करने के लिए प्रयोग किया जाता है। पहले (बाएं) 3 बिट्स स्वामी अनुमतियों के अनुरूप हैं, समूह अनुमतियों के मध्य 3 हैं, और अंतिम (सबसे दाएं) अन्य सभी उपयोगकर्ताओं की अनुमतियों के अनुरूप हैं। बिट्स का क्रम हमेशा समान होता है, read,write,executeया rwxइस प्रकार, वास्तव में क्योंकि ऑर्डर समान होता है, बाइनरी प्रतिनिधित्व में परिवर्तित होने पर व्यक्तिगत संख्या, अनुमति बिट्स को सेट करेगा जिसके लिए संख्या में संबंधित स्थिति बिट 1 है और जो 0 है उसे अनसेट करें विशेष रूप से:

  • अष्टाधारी संख्या 7द्विआधारी में 111 है, इसलिए आप मालिक के लिए सभी रीड, राइट और बिट्स निष्पादित करते हैं; rwxसेट है।
  • ऑक्टल संख्या 5बाइनरी में 101 है, इसलिए आप पढ़ रहे हैं और निष्पादित कर रहे हैं, लेकिन राइट बिट्स को अक्षम कर सकते हैं, और चूंकि यह समूह और अन्य उपयोगकर्ताओं के लिए 5 है, इसलिए उन दो श्रेणियों में एक ही अनुमतियाँ होंगी। इस प्रकार r-xसेट किया गया है।

यहाँ छोटा डेमो है:

    bash-4.3$ touch file1 file2
    bash-4.3$ chmod +x file1
    bash-4.3$ chmod 755 file2
    bash-4.3$ ls -l file1 file2
    -rwxrwxr-x 1 xieerqi xieerqi 0 7月   6 13:54 file1
    -rwxr-xr-x 1 xieerqi xieerqi 0 7月   6 13:54 file2

3

एक महत्वपूर्ण अंतर यह है कि chmod + umask प्रतिबंधों के अधीन है, और chmod <octal> नहीं है।

निम्नलिखित उदाहरण पर विचार करें:

$ ls -l foo bar
---------- 1 gowenfawr users 0 Jul  7 16:40 bar
---------- 1 gowenfawr users 0 Jul  7 16:39 foo
$ umask
0022
$ chmod +w bar
$ umask 0002
$ chmod +w foo
$ ls -l foo bar
--w------- 1 gowenfawr users 0 Jul  7 16:40 bar
--w--w---- 1 gowenfawr users 0 Jul  7 16:39 foo
$

इसलिए, यदि आप अपनी umask सेटिंग्स के लिए उपयुक्त तरीके से एक डेल्टा परिवर्तन करना चाहते हैं, तो '+' सिंटैक्स का उपयोग करें। लेकिन अगर आप इसे umask के बिना पूरी तरह से सेट करना चाहते हैं, तो <ऑक्टल> प्रारूप का उपयोग करें, और महसूस करें कि आपको सभी बिट्स को निर्दिष्ट करना है, न कि केवल एक डेल्टा।


1

इन सुंदर जवाबों के अलावा मैं एक छोटे लेकिन शायद महत्वपूर्ण अंतर का उल्लेख करना चाहता हूं। कमांड chmod 755 fileके बराबर है chmod 0755 file। यदि हम इस कमांड को किसी फ़ाइल पर चलाते हैं जिसमें SETUID-bit या SETGID-bit सेट है, तो यह SETUID / SETGID-bit को हटा देगा। chmod +x fileSETUID / SETGID-bit को अछूता छोड़ देगा। हम इसे निम्नलिखित उदाहरण में देख सकते हैं:

~ $ स्पर्श परीक्षण
~ $ chmod u + s परीक्षण
~ $ ll परीक्षण
-rwSrw-r-- 1 मूक मूक 0 सितम्बर 14 00:49 परीक्षण
~ $ chmod + x परीक्षण
~ $ ll परीक्षण
-rrrwxr-x 1 मूक मूक 0 सितंबर 14 00:49 परीक्षण
~ $ chmod 755 परीक्षण
~ $ ll परीक्षण
-rxxr-xr-x 1 मूक मूक 0 सितम्बर 14 00:49 परीक्षण
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.