Chmod + w अन्य (ओ) को लिखित अनुमति क्यों नहीं देता है


18

जब मैं chmod +w filenameइसे चलाता हूं तो इसे लिखने की अनुमति नहीं otherदेता, यह सिर्फ लिखने की अनुमति देता है userऔर group

इस कमांड को निष्पादित करने के बाद

chmod +w testfile.txt

ls -l testfile.txtप्रिंट चल रहा है

-rw-rw-r-- 1 ravi ravi 20 Mar 10 18:09 testfile.txt

लेकिन इसके मामले में +rऔर +xयह ठीक से काम करता है।

मैं उपयोग नहीं करना चाहता chmod ugo+w filename



1
यदि आप उपयोग नहीं करना चाहते हैं ugo, तो उपयोग करें a
मुरु

हां, लेकिन मैं जानना चाहता हूं कि +wकाम क्यों नहीं किया गया।
रवि सेवा

इसलिए मैंने दो टिप्पणियाँ छोड़ दीं।
मुरु

@muru। आप अपने askubuntuजवाब में दावा करते हैं कि आप ऊपर उल्लेख करते हैं कि "यह व्यवहार POSIX- जनादेश है, और इसलिए, बग नहीं"। कृपया सलाह दी जाए कि POSIX एप्लिकेशन उपयोग पाठ गैर-मानक है और इसलिए POSIX द्वारा अनिवार्य नहीं है।
fpmurphy

जवाबों:


26

आपकी विशिष्ट स्थिति

अपने विशिष्ट स्थिति में, हम अनुमान लगा सकते हैं कि अपने वर्तमान umaskहै 002(यह एक आम डिफ़ॉल्ट मान है) और यह आपके आश्चर्य बताते हैं।

उस विशिष्ट स्थिति में जहाँ umaskमान 002 (सभी संख्याएँ अष्ट) होता है।

  • +rसाधन ugo+rक्योंकि 002 & 444है 000, जो सभी बिट्स सेट होने के लिए देता है
  • +xसाधन ugo+xक्योंकि 002 & 111है 000, जो सभी बिट्स सेट होने के लिए देता है
  • लेकिन +wइसका मतलब है ug+wक्योंकि 002 & 222है 002जो 'ओ' बिट सेट होने के लिए रोकता है,।

अन्य उदाहरण

  • umask 022 +wमतलब के साथ u+w
  • umask 007 +rwxमतलब के साथ ug+rwx
  • umask 077 +rwxमतलब के साथ u+rwx

आपकी उम्मीदों से क्या मेल खाता होगा

जब आप निष्पादित करके बदल umaskजाते हैं000

umask 000

आपके टर्मिनल में, तब

chmod +w file

ug + w के लिए अनुमतियाँ सेट करेगा।

पक्षीय लेख

जैसा कि ilkkachu द्वारा सुझाया गया है, ध्यान दें कि umask 000इसका मतलब यह नहीं है कि हर कोई आपकी सभी फाइलों को पढ़ और लिख सकता है।

लेकिन umask 000इसका मतलब यह है कि आपकी मशीन पर किसी भी उपयोगकर्ता खाते में किसी तरह की पहुंच हो सकती है (जिसमें शामिल हो सकते हैं प्रोग्राम जिसमें सर्वर सेवाएँ ofc चल रही हैं) आप उस मास्क के साथ सक्रिय होने वाली सभी फाइलों को पढ़ और लिख सकते हैं और बदल नहीं सकते हैं (यदि युक्त श्रृंखला हो तो) रूट तक की निर्देशिकाएं भी उन्हें अनुमति देती हैं)।


4
umask 000 का मतलब है कि हर कोई जो आपकी मशीन पर एक उपयोगकर्ता खाते के लिए किसी प्रकार की पहुंच रखता है (जिसमें शामिल हो सकता है प्रोग्राम जिसमें सर्वर सेवाएँ ofc चल रही है) उस मास्क के साथ आपके द्वारा बनाई गई सभी फाइलों को पढ़ और लिख सकता है और स्पष्ट नहीं हो सकता है
StarWeaver

4
"+ r का मतलब है ugo = r" - नहीं, यह नहीं है, इसका मतलब यह है कि rउन पार्टियों के लिए बिट सेट करना है जहां umask इसे अनुमति देता है। यह स्पष्ट रूप से जीएनयू चामॉड और फ्रीबीएसडी चामोद, साथ ही मानक के मैनुअल में कहा गया है। उसी के लिए +x+wउस विशेष उमंग के मामले के लिए आप सही हैं।
ilkachachu

4
इसके अलावा, umask सेट करने का मतलब 0 यह नहीं है कि हर कोई आपकी सभी फ़ाइलों को पढ़ और लिख सकता है , क्योंकि कई एप्लिकेशन ऐसी फाइलें बनाते हैं जो विशेष रूप से मोड के साथ निजी होती हैं 0600, जिसका अर्थ है कि समूह और अन्य को umask की परवाह किए बिना कोई एक्सेस नहीं मिलता है।
ilkachachu

@ilkkachu + r का मतलब है ugo = r, यह प्रश्न में वर्णित स्थिति से संबंधित था। वह सामान्य नहीं था।
Prvt_Yadav

2
@Debian_yadav, यह बिल्कुल सही बात है: umaskयह एक महत्वपूर्ण हिस्सा है कि कैसे +rव्यवहार किया जाता है, न कि एक विचार। इसके अलावा, यहां तक कि umask संभालने 002, chmod +rनहीं मतलब है chmod ugo=r, इसका मतलब हैchmod ugo+r
ilkkachu

24

साथ में:

chmod +<perms>

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

यदि आप उपयोगकर्ता , समूह और अन्य को umask की परवाह किए बिना परमिट जोड़ना चाहते हैं , तो उपयोग करें

chmod a+<perms>

जिसके लिए कम है

chmod ugo+<perms>

इसका मतलब है कि + x और a + x बराबर नहीं हैं।
Prvt_Yadav 23

1
मुझे लिंक करना पसंद है: man7.org/linux/man-pages/man1/chmod.1.html these यदि इनमें से कोई भी नहीं दिया गया है, तो प्रभाव ऐसा है जैसे कि (ए) दिए गए थे, लेकिन बिट्स जो ऑमस्क में सेट किए गए हैं प्रभावित नहीं होते। ”
तेहनीकोर्ग

0

आपको यह निर्दिष्ट करने की आवश्यकता है कि आप किसको अनुमति दे रहे हैं, जैसे कि other, उपयोग करकेchmod o+w testfile.txt


1
हाँ, लेकिन मुझे लगता +wहै कि सभी (उपयोगकर्ता, समूह और अन्य) को अनुमति देता है।
रवि सेवा

सभी उपयोगकर्ताओं को अनुमति देने के लिए, उपयोग करें chmod a+w testfile.txtuउपयोगकर्ता के लिए, gसमूह के लिए, oअन्य के लिए, और aसभी के लिए उपयोग करें ।
जोसेन ५११

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