'chmod u + x' बनाम 'chmod + x'


112

chmod u+xकेवल और केवल के बीच अंतर क्या है chmod +x? मैंने एक टन ट्यूटोरियल देखा u+xहै जो स्क्रिप्ट को निष्पादन योग्य बनाने के लिए उपयोग करने के लिए कहता है । हालाँकि, छोड़ने से uकोई प्रभाव नहीं पड़ता है।

जवाबों:


148

chmodउस कवर का मैन पेज ।

  • आप उपयोगकर्ता के लिए खड़ा है
  • जी समूह के लिए खड़ा है।
  • दूसरों के लिए खड़ा है
  • सभी के लिए एक खड़ा है।

इसका मतलब है कि chmod u+x somefileकेवल उस फ़ाइल निष्पादन अनुमतियों के मालिक को अनुदान देगा जबकि chmod +x somefileयह उसी तरह है chmod a+x somefile

चोमॉड मैन पेज कहता है:

एक प्रतीकात्मक मोड का प्रारूप है [ugoa...][[+-=][rwxXstugo...]...][,...]। कई प्रतीकात्मक संचालन दिए जा सकते हैं, जिन्हें अल्पविराम द्वारा अलग किया जाता है।

'Ugoa' अक्षरों का एक संयोजन जो उपयोगकर्ताओं की फ़ाइल तक पहुँच को नियंत्रित करता है, उसे बदला जाएगा: वह उपयोगकर्ता जो इसका (u) ​​मालिक है, फ़ाइल के समूह में अन्य उपयोगकर्ता (g), अन्य उपयोगकर्ता फ़ाइल के समूह (o) में नहीं हैं, या सभी उपयोगकर्ता (ए)। यदि इनमें से कोई भी नहीं दिया जाता है, तो प्रभाव ऐसा होता है जैसे 'a' दिया गया था, लेकिन umask में सेट बिट्स प्रभावित नहीं होते हैं।


मेरे पास एक छोटा सा सवाल है, + x में क्या अंतर है और चलो 111 कहते हैं। यह दोनों निष्पादन योग्य बनाता है
TheBro21

ऐसा इसलिए है क्योंकि 1 अष्टक संकेतन है जो निष्पादन की अनुमति के लिए है। 111 का मतलब उपयोगकर्ता, समूह और अन्य के लिए निष्पादन योग्य है।
ओक्टेवियन डैमियन

महान स्वच्छ उत्तर
m4heshd

ऑमस्क प्रभाव महत्वपूर्ण है, जिससे chmod +x fileअलग है chmod a+x file- विवरण के लिए रवेक्सिना का उत्तर देखें।
दालचीनी

19

बस करने +xसे यह सभी झंडों पर लागू होगा: [यू] सर्, [जी] रूप, [ओ] थर्स।

man chmodअधिक जानकारी के लिए टाइप करें।


मैं वादा करता हूं कि मैंने पहले मैनुअल की जांच की, लेकिन यह नहीं देखा क्योंकि मैंने विवरण को छोड़ दिया और विकल्पों पर नीचे कूद गया। मैं उन्हें अब देख रहा हूँ :-)
नाथन श्वानमैन

14

आवश्यकताएँ

सबसे पहले मैं आपको इन सवालों और नीचे दिए गए उत्तरों को पढ़ने का सुझाव देता हूं:

यह आपको उन सभी आवश्यक भागों को समझने में मदद करता है जिन्हें आपको जानना आवश्यक है।


लघु संस्करण

  • chmod +xके बराबर है chmod ugo+x( umaskमूल्य के आधार पर )
  • chmod a+xके बराबर है chmod ugo+x( umaskमूल्य पर विचार किए बिना )

व्याख्या

इसका परिणाम सभी के chmod a+xलिए निष्पादन योग्य बिट (स्वामी, समूह, अन्य) को सेट करना आसान है?

हालांकि chmod +x, यह थोड़ा मुश्किल है, यह कहता है umaskकि मूल्य का उपयोग करें और उस मूल्य के आधार पर xइसे सभी को जोड़ें जो अनुमति दी गई है।

तो अगर umaskमेरे पर्यावरण का है 0002:

$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx

यह xइस स्थिति में उपयोगकर्ता (स्वामी), समूह और अन्य को जोड़ने जा रहा है , (जो कि अधिकांश प्रणालियों के लिए डिफ़ॉल्ट स्थिति है) यह बिल्कुल वैसा chmod ugo+xही है chmod a+x, जैसा या अधिक क्रिया रूप में है:

chmod u+x,g+x,o+x

क्या आप इसके chmod u+x,g+x,o+xऔर आउटपुट के बीच संबंध स्थापित कर सकते हैं umask -S?

चलिए अब umaskवर्तमान शेल में परिवर्तन करते हैं 0003:

$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r

जैसा कि आप देख सकते हैं कि अब केवल मालिक और समूह ही निष्पादन योग्य होने जा रहे हैं, अन्य नहीं। इसका मतलब chmod +xअब chmod u+x,g+xया के बराबर है chmod ug+x


प्रशन समय!

अगर मैं जाए तो क्या होता chmod +wसेट करने के बाद एक फ़ाइल पर umaskकरने के लिए 0003?

पहले की तरह ही, यह केवल प्रभावित करता है userऔर groupफ़ाइल का क्योंकि 3 भी लेखन अनुमति (2) को हटा देता है।


बोनस

जब आप थोड़ा सा हटा रहे हों तो इसका प्रभाव समान होता है chmod -w:

$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx

7

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

chmod +xया chmod a+x('सभी प्लस निष्पादन योग्य बिट') फ़ाइल को सभी के द्वारा निष्पादन योग्य बनाता है।

यदि आप इसे किसी निर्देशिका में करते हैं, तो यह निर्देशिका को खोज करने योग्य बनाता है, बजाय। यानी, आप उस निर्देशिका की सामग्री को सूचीबद्ध कर सकते हैं, जिस पर आपके पास + x अनुमति है।


क्षमा करें, लेकिन यह बात भी मेरे लिए काम नहीं आई। मैंने इसे sudo के साथ आज़माया है और इसे अपने कंप्यूटर पर काम नहीं किया है। askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
अनिरुद्ध गुप्ता

@AnkitGupta मुझे यकीन नहीं है कि आप क्या कह रहे हैं। मेरी टिप्पणी एक अलग क्यू एंड ए में एक समस्या को ठीक करने का इरादा नहीं था। इसके स्थान पर उत्तर के लिए स्पष्टीकरण मांगने का प्रयास करें। अपने प्रश्न को यह कहने के लिए संपादित करें कि आपने क्या प्रयास किया है। आउटपुट दिखाएं।
बेलाक्वा

1
  • chmod u+x fileइसका मतलब यह है कि umask(आपके मॉड सेट किया जाएगा, कोई सवाल नहीं) की अनदेखी करते हुए फ़ाइल के मालिक के लिए निष्पादन योग्य बिट जोड़ें ।

  • chmod +x fileइसका मतलब है कि मालिक, समूह और अन्य लोगों के लिए निष्पादन योग्य बिट को जोड़ने पर विचार करें umask(पहले umaskतो मॉड लागू करें, यह umask के मूल्य के आधार पर अलग-अलग प्रभाव हो सकता है)।


चलो दो फाइलें बनाते हैं:

$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file2

अब मैंने umaskनिष्पादन योग्य बिट्स को हटाने के लिए "111" पर सेट किया umask 111:।

$ chmod u+x file1
$ chmod  +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file2

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

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