क्यों `chmod u = rw, go = r,…` के बजाय `chmod 644` का उपयोग करें?


38

मैं कुछ वर्षों के लिए * nix पर काम कर रहा हूं, और उन चीजों में से एक जो मुझे अभी उपयोग में नहीं आ रही हैं, कोड में ऑक्टेल अनुमति है। वहाँ लाइन की लंबाई की तुलना में किसी अन्य कारण से पसंद करते हैं करने के लिए है chmod 644 ...से अधिक chmod u=rw,go=r ...?

पुनश्च: मैं अष्टाधारी अनुमति के स्पष्टीकरण की तलाश में नहीं हूं। मुझे पता है कि वे कैसे काम करते हैं, और यह मैनुअल में अच्छी तरह से समझाया गया है। मैं पूछ रहा हूं कि मानव-पठनीय रूप से अष्टक को क्यों पसंद किया जाता है।

जवाबों:


40

अष्टक कोड का उपयोग करने के दो फायदे हैं जिनके बारे में मैं सोच सकता हूं, जिनमें से कोई भी ऐसा नहीं है:

  1. वे छोटे हैं, टाइप करना आसान है।
  2. कुछ चीजें केवल उन्हें समझती हैं, और यदि आप नियमित रूप से उनका उपयोग करते हैं, तो जब आप एक पर चलते हैं तो आप अपना सिर खरोंच नहीं करेंगे (या प्रलेखन के लिए चल रहे हैं)। जैसे, आपको chmodपर्ल या सी में ऑक्टल का उपयोग करना होगा ।

कभी-कभी वास्तव में सरल उपयोगिताओं "दोस्ताना" संस्करणों को संभाल नहीं पाएंगे; विशेष रूप से गैर-जीएनयू उपयोगकर्ता क्षेत्रों में।

इसके अलावा, कुछ उपयोगिताओं ने अष्टक को थूक दिया। उदाहरण के लिए, यदि आप umaskयह देखने के लिए दौड़ते हैं कि आपका वर्तमान umask क्या है, तो वह इसे ऑक्टल में बाहर थूक देगा (हालांकि बाश में, umask -Sप्रतीकात्मक है)।

इसलिए, संक्षेप में, मैं कहूंगा कि उन्हें पसंद करने का एकमात्र कारण कम वर्ण टाइप करना है, लेकिन यह कि यदि आप उनका उपयोग नहीं करना चाहते हैं, तो भी आपको पता होना चाहिए कि वे कैसे मैप करते हैं ताकि आप चलाते समय एक ऑक्टल कोड का पता लगा सकें। उन चीजों में से एक है जो केवल अष्टक करती है। लेकिन आपको तुरंत यह पता करने की आवश्यकता नहीं है कि 5 नक्शे rx, आपको केवल यह पता लगाने में सक्षम होने की आवश्यकता है।


1
यह कहना कि chmodपर्ल या सी में ऑक्टल प्रतिनिधित्व का उपयोग करने की आवश्यकता नहीं है वास्तव में यह देखने के लिए एक फायदा है क्योंकि प्रतिनिधित्व पहले से ही पहले से मौजूद था।
n0pe

@MaxMackie: इसका उपयोग करने के लिए आपको एक फायदा है। मैं स्पष्ट कर दूंगा।
derobert

18

मैं बहुत लंबे समय के लिए अष्टाधारी का उपयोग कर रहा हूँ लगता है।

7 आरडब्ल्यूएक्स है (इसके साथ कुछ भी करें), 5 आरएक्स है (इसे निष्पादित करने के लिए इसे पढ़ें), 6 आरई (कोई भी डेटा फ़ाइल जिसे आपको संशोधित करने की आवश्यकता है), 4 आर है (हम आपको इसे देखने देंगे), और 0 है - (क्षमा करें, देखने के लिए यहां कुछ भी नहीं है)। और आदेश मुझे, हमें, सबको है। ये मूल संयोजन हैं।

755 मैं इसे बदल सकता हूं और चला सकता हूं, बाकी सभी इसे चला सकते हैं।

644 मैं इसे बदल सकता हूं, बाकी सभी इसे पढ़ सकते हैं।

444 केवल सभी के लिए पढ़ें, हम यहाँ हैं।

500 मैं इसे अंजाम दे सकता हूं, इसे बदलना नहीं चाहता, बाकी सब लोग इसे बंद कर दें।

मेरे लिए, यह छोटी बात है। 9 अक्षर और एक फ़ाइल युक्ति और आगे बढ़ें।


खैर, ऑक्टल (बेस -8), हेक्स (बेस -16) नहीं।
derobert

हां, वह एक, आधा हेक्स। <grin>
Fiasco Labs

यहाँ एक ही है, मुझे पाठ संस्करण की तुलना में ऑक्टल पढ़ने में आसान लगता है ...
ब्रायन नोब्लुच

13

मैंने कभी भी अष्टक प्रतिनिधित्व का आनंद नहीं लिया है, मैं हमेशा सीधे rwxr-xr-xसंकेतन के लिए गया हूं क्योंकि यह मुझे सरल लगता है। हालांकि, जो मैं अष्टक प्रतिनिधित्व इकट्ठा करता हूं, वह वास्तव में हमारे लिए याद रखने में आसान बनाता है (मैं यह नहीं देखता कि यह कैसे काम करता है)।

केवल अन्य संभावित लाभ जो मैं देखता हूं कि ऑक्टल को मेज पर लाना अस्पष्टता की कमी है। 8 अलग-अलग अनुमति बिट कॉन्फ़िगरेशन को एक अलग संख्या द्वारा दर्शाया जाता है, जो मुझे यकीन है कि कुछ लोगों को गलती से मदद करता है wजहां उन्हें नहीं होना चाहिए।

हालांकि दुर्भाग्य से, मैंने इस तालिका को याद कर लिया है:

#  r  w  x
0  0  0  0
1  0  0  1
2  0  1  0
3  0  1  1
4  1  0  0
5  1  0  1
6  1  1  0
7  1  1  1

8
मैंने इसे 3. के प्रत्येक सेट के लिए बाइनरी का उपयोग करने के रूप में सीखा। इसलिए rw ------- (110) (000) (000), जो (6) (0) (0) है। rwxr-xr-x (111) (101) (101), तो (7) (5) (5) होगा।
रोब

4
प्राथमिक कारण अष्टाधारी प्रतिनिधित्व मौजूद है कैसे मूल यूनिक्स अनुमति प्रणाली प्रोग्राम किया गया था कि क्योंकि, सी 4 अष्टाधारी अंक से (विशेष लोगों के लिए 1777 की तरह, याद है /tmp, चिपचिपा सा सहित) प्रस्तावित ड्राफ्ट पैरा पर 12 बिट, एक सुविधाजनक आकार लेता है, विशेष रूप से पीडीपी -8। यदि वे हेक्स के साथ जाते हैं, तो हेक्स अंक प्रति एक अनुमति सेट की एक प्राकृतिक मानचित्रण के लिए 16-बिट + शब्द मशीन की आवश्यकता होती है, जो सभी पीडीपी नहीं थे। यह 3 बिट्स को भी बर्बाद कर देगा या आवश्यकता होगी कि वे उन बिट्स के लिए एक उपयोग का आविष्कार करें, जो शायद बिना वास्तविक लाभ के जटिल यूनिक्स परमिट होंगे।
वॉरेन यंग

⁺¹ @Rob btw पर जाता है। दरअसल, उसके बाद बाइनरी प्रतिनिधित्व से एक वास्तविक संख्या की गणना करना एक बुनियादी संयोजन है, और आपको "ऑक्टल" होने के बारे में याद रखने की भी ज़रूरत नहीं है क्योंकि अधिकतम संख्या (यानी 111 बी) 7. से अधिक नहीं होगी
हाय-एंजेल

यह तालिका इसे बहुत स्पष्ट करती है। एक दम बढ़िया!!!
लिटिल रॉज

6

मुझे लगता है कि इसका कारण फिर से है - इतिहास। सबसे पहले अष्टक मूल्य ही थे। प्रतीकात्मक बाद में आए।

मैं प्रतीकात्मक लोगों को पसंद करता हूं। खासकर यदि आप अन्य भागों को छूने के बिना मौजूदा मूल्यों को बदलना चाहते हैं।

जैसे chmod -R u=rwx,g-w+X,o=-कि अष्टक में ...


3

ध्यान दें कि कुछ प्रणालियों पर ऑक्टल मोड सेट्यूड और सेटगिड बिट्स को हटा सकते हैं।

फेडोरा 16:

$ mkdir dir
$ chmod 2775 dir
$ stat -c %a dir
2775
$ chmod 770 dir
$ stat -c %a dir
2770

( 2संरक्षित है)

FreeBSD 9:

$ mkdir dir
$ chmod 2775 dir
$ stat -f %Mp%Lp dir
2775
$ chmod 770 dir
$ stat -f %Mp%Lp dir
0770

( 2बन गया 0)

यदि आप किसी फ़ाइल या निर्देशिका की अनुमतियाँ बदलना चाहते हैं, तो बेहतर होगा कि आप जिन बिट्स को बदलना चाहते हैं उन्हें निर्दिष्ट करें (जैसे chmod o= dirया chmod o-rwx dirउपरोक्त उदाहरण में)।


2

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

ऑक्टल रूप, विशेष रूप से जब पुनरावर्ती उपयोग किया जाता है, तो प्रवेश को बेवकूफ चीजें करने के लिए मजबूर करता है। या बल्कि इसमें लापरवाही के परिणाम सामने आए हैं जो बेवकूफी में बदल गए हैं। जब भी आप कुछ फ़ोल्डर में बहुत सारी पाठ फ़ाइलों और xबिट सेट के साथ चलाते हैं , तो आपके पास सबूत होता है।

कोई भी इस xतरह से क्यों सेट करेगा ? क्योंकि यह मुश्किल नहीं है जब तक आप मोड के लिए mnemonic फॉर्म का उपयोग न करें। इस बात पर विचार करें कि आप किन अनुमतियों को रीसेट करना चाहते हैं /var/wwwऔर आप कोई पुरानी शैली का CGI नहीं चलाते हैं, इसलिए xबिट को हटा दिया जाना चाहिए। हालाँकि, xबिट निर्देशिका पर एक और उद्देश्य प्रदान करता है। तो आप अंत में कुछ (जैसे root) कर रहे हैं:

chmod -R 666 /var/www
find /var/www -type d -exec chmod 777 {} \;

यदि, हालांकि, आप उपयोग कर रहे थे mnemonic फार्म आप इसे एक "नुस्खा" दे सकते हैं:

chmod -R a=rwX /var/www

जिसका संक्षिप्त रूप chmod -R ugo=rwX /var/www(समान, लेकिन अलग-अलग पथ:) प्राप्त करना है chmod -R a-x,a+rwX /var/www

लेकिन एक और चीज है जो अधिक तुच्छ है जो अष्टक मोड के साथ प्राप्त नहीं की जा सकती है। आप समायोजित नहीं कर सकते userया groupया otherअष्टाधारी फार्म के साथ व्यक्तिगत रूप से मुखौटा।

संक्षेप में: यह एक स्केलपेल (mnemonic) और एक तेज रसोई चाकू (ऑक्टल) की तुलना करने जैसा है ... लेकिन आपको अभी भी अन्य कारणों के लिए ऑक्टल मोड बिट्स जानना होगा :)

कारण है कि ऑक्टल मोड को अभी भी पसंद किया जाता है , मुझे लगता है, यह अधिक टाइपिंग मेंमोनोनिक रूप से शामिल नहीं है, लेकिन अत्यधिक रूढ़िवादी प्रशंसा करता है। और हाँ, 2013 की पुकार, उन अत्यधिक रूढ़िवादी प्रवेश अभी भी मौजूद हैं और कुछ समय के लिए यहाँ रहने के लिए हैं।


0

जब आपको हर समय फ़ाइलों की अनुमति को संशोधित करना होता है , तो आप 3 वर्णों की सराहना करते हैं। अनुमतियाँ बदलने के लिए मैं बहुत समय +या -संस्करणों का उपयोग करता हूं ।

उदाहरण के लिए, मैं अपने अपाचे फ़ोल्डर में एक नया PHP, पायथन या अन्य स्क्रिप्ट बनाता हूं। chmod a+xमैं केवल इतना करता हूं कि इसे चलाया जा सके। मैंने इसे "सभी प्लस निष्पादन" के रूप में पढ़ा। अब मुझे पता है कि यह काम करने जा रहा है, और मुझे केवल 3 पात्रों की आवश्यकता थी।

अन्य बार मैं 644 और 755 का स्वचालित रूप से उपयोग करता हूं। मैं इसे सिर्फ 644एक फाइल के रूप में समझता हूं , 755एक स्क्रिप्ट का मतलब है।


0

यह umask सेटिंग्स के लिए अच्छी तरह से फिट बैठता है, जो आमतौर पर ऑक्टल लेखन ( pamया में fstab) में दिया जाता है ।


0

मेरा सुझाव है कि एक महत्वपूर्ण कारण यह है कि ऑक्टल प्रतिनिधित्व बारीकी से मेल खाता है जो आप के साथ देखते हैं ls -l(या, बल्कि, यह तब करता है जब आप मानसिक रूप से ऑक्टल और बाइनरी के बीच परिवर्तित होते हैं)।

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