चामोद -यू क्या करता है?


19

दुर्घटना से मैं भाग गया chmod -u filenameऔर इसने मेरे पास मौजूद सभी अनुमतियां हटा दीं filename

मैन पेज एक -uविकल्प का संदर्भ नहीं देता है । प्रयोग करते हुए मैं यह निष्कर्ष निकालने में सक्षम था कि यह सभी अनुमतियों को नहीं हटाता है, लेकिन केवल पढ़ने और पहुंच को निष्पादित करता है, जिससे लेखन पहुंच बरकरार रहती है।

तो यह वास्तव में क्या करता है?


ऊपर दिया गया मेरा निष्कर्ष गलत है, अब मुझे लगता है कि यह जो करता है वह सभी श्रेणियों से मालिक की अनुमतियों को हटा देता है।


मुझे लगता है कि व्यवहार के अनुरूप है a=u, केवल इसके -बजाय है =और aइसे वैसे ही गिराया जा सकता है जैसे कि, उदाहरण के लिए a+x


6
+1 एक बुनियादी सवाल है कि आदमी पेज में नहीं है पूछने के लिए।

1
"एक प्रतीकात्मक विधा का प्रारूप है [ugoa...][[-+=][perms...]...], जहाँ perms या तो सेट से शून्य या अधिक अक्षर rwxXst, या सेट से एक अक्षर हैugo " (GNU chmod man page); POSIX काफी अस्पष्ट है, लेकिन एक ही प्रभाव के लिए "पर्मस्कोपी" उत्पादन को परिभाषित करता है।
माइकल होमर

1
@MichaelHomer यह नहीं कहता कि यह क्या करता है।
y_wc

1
@y_wc "इनमें से एक या पत्र के अधिक के बजाय, आप वास्तव में एक पत्र निर्दिष्ट कर सकते हैं युगो : अनुमतियाँ उपयोगकर्ता के लिए जो फ़ाइल (मालिक को दी गई u), अनुमतियाँ अन्य उपयोगकर्ताओं को, जो फ़ाइल के समूह के सदस्य हैं के लिए दी गई ( g) , और उन उपयोगकर्ताओं को दी गई अनुमतियाँ जो दो पूर्ववर्ती श्रेणियों ( o) में से कोई भी नहीं हैं। "
माइकल होमर

1
हां, मैंने वह पढ़ा। मैं नहीं देखता कि यह उल्लेख करता है कि यह क्या करता है। यह कहता है कि मैं उन पत्रों में से एक को निर्दिष्ट कर सकता हूं। उदाहरण के लिए u, मैं फ़ाइल के स्वामित्व वाले उपयोगकर्ता को दी गई अनुमतियों को निर्दिष्ट करूँगा। लेकिन यह नहीं कहता कि यह क्या करता है। इसका क्या अर्थ है?
y_wc

जवाबों:


19

यह एक विकल्प नहीं है, लेकिन अनुमतियों को निर्दिष्ट करने का एक मानक (लेकिन असामान्य) तरीका है। यह (दूर करने के लिए इसका मतलब है -फ़ाइल मालिक (के साथ जुड़े) अनुमतियाँ u,) सभी उपयोगकर्ताओं (कोई पूर्ववर्ती के लिए u, gया o)। यह है आदमी पेज में प्रलेखित।

GNU chmod के मैन पेज दस्तावेज़ इस प्रकार हैं:

एक प्रतीकात्मक मोड का स्वरूप है [ugoa...][[-+=][perms...]...], जहां permsसेट से या तो शून्य या अधिक पत्र है rwxXst, या सेट से एक भी पत्र युगो

और बादमें

इनमें से एक या एक से अधिक अक्षरों के बजाय, आप बिल्कुल एक अक्षर के अक्षर को निर्दिष्ट कर सकते हैं: फ़ाइल के मालिक को uदी गई अनुमतियाँ ( ), अन्य उपयोगकर्ताओं को दी गई अनुमतियाँ जो फ़ाइल के समूह ( g), और ( उन उपयोगकर्ताओं को अनुमतियाँ जो दो पूर्ववर्ती श्रेणियों में से नहीं हैं ( o)

तो -uहटाने का मतलब है ( -) वर्तमान में मालिक के लिए जो कुछ भी अनुमतियाँ हैं ( u) के लिए सक्षम हैं ( a-uवर्तमान में umask को छोड़कर, समतुल्य )। हालांकि, यह अक्सर बहुत उपयोगी नहीं होता है chmod +u, उदाहरण के लिए, जब कभी-कभी ऑपरेटिंग होते हैं, तो मालिक से दूसरों की अनुमति की प्रतिलिपि बनाने के लिए, एनालॉग कभी-कभी होगा।


यह भी POSIX में प्रलेखित है , लेकिन अधिक अस्पष्ट रूप से परिभाषित किया गया है: अनुमति विनिर्देश मोटे तौर पर who[+-=]perms(या एक संख्या) है, और उन का प्रभाव आगे निर्दिष्ट किया गया है:

Permcopy प्रतीक u, gऔर oक्रमशः फ़ाइल मोड बिट्स के उपयोगकर्ता, समूह, और अन्य भागों से जुड़े वर्तमान अनुमतियों का प्रतिनिधित्व करेगा। इस खंड के शेष के permलिए, गैर-टर्मिनलों permऔर permcopyव्याकरण में संदर्भित करता है ।

और फिर

-

... तो जो निर्दिष्ट नहीं है, फ़ाइल मोड बिट्स स्वामी, समूह, और अन्य अनुमतियाँ, प्रेरक प्रक्रिया के फ़ाइल मोड निर्माण नकाब में इसी बिट्स इसका अपवाद केवल वे के लिए पर्म के प्रतिनिधित्व वाले, साफ़ कर दिया जाएगा।


धन्यवाद, माइकल। POSIX प्रलेखन कायल है। ग्नू हालांकि ... कृपया मेरी इस टिप्पणी को देखें । मैं नहीं देखता कि "सो" के बाद जो आता है वह पहले से क्या है। permsहो सकता है u, कि मुझे मिल गया। हां, uअनुमतियाँ या स्वामी निर्दिष्ट करता है। लेकिन यह कैसे अनुसरण करता है जो सभी उपयोगकर्ताओं से -uस्वामी (मापांक umask) की अनुमति को हटा देता है ?
y_wc

क्योंकि ऐसा -हमेशा होता है: यह निर्दिष्ट वर्ग के उपयोगकर्ताओं से निर्दिष्ट अनुमतियों को हटा देता है। या (करीब) के -uअनुरूप -wहै ugo-u
माइकल होमर

मैं कहने वाला था कि मैं यहाँ प्रलेखन पर चर्चा करने नहीं आया था और मैं यह समझने में प्रसन्न था कि अभी क्या हो रहा है, लेकिन डॉक्स ने अभी क्लिक किया है। धन्यवाद।
y_wc

क्या मैं आपको एक और chmodप्रलेखन प्रश्न के साथ परेशान कर सकता हूं ? मुझे लगता है कि अगर आपको लगता है कि यह एक अलग सवाल का हकदार है। "और = उन्हें जोड़ने का कारण बनता है और एक निर्देशिका के असंबद्ध सेट उपयोगकर्ता और समूह आईडी बिट्स प्रभावित नहीं होते हैं सिवाय इसके कि हटाए जाने वाले असमान बिट्स का कारण बनता है।" यह मेरे लिए कह रहा है, एक निर्देशिका दी जिसका मालिक केवल लिखने का उपयोग किया है। chmod u=rx directoryमालिक की अनुमति के रूप में छोड़ देंगे rwx। लेकिन ऐसा नहीं होता है, इसके बजाय वे अपेक्षित बन जाते हैं r-x। मैं कुछ गलत कर रहा हूँ?
y_wc

यह कह रहा है कि sयदि आप उनका उल्लेख नहीं करते हैं, तो सेट्युड / सेटगिड ( ) बिट्स अकेले रह जाते हैं और आपके द्वारा निर्दिष्ट कुछ भी नहीं हटाया जाता है।
माइकल होमर

2

इसका उत्तर /unix//a/429424/255251 के समान है ।

chmod -u file_name

सभी अनुमति नहीं निकालता है, लेकिन यह umaskमूल्य पर विचार करता है ।

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

अब umask मान बदलें

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file

2
शिक्षाप्रद, जानने के लिए अच्छा और बहुत उपयोगी है, लेकिन मुझे लगता है कि यह वास्तव में मुद्दा नहीं है, हालांकि यह बहुत संबंधित है। धन्यवाद।
y_wc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.