उबंटू OSX `chmod -h` ध्वज के बराबर क्या है?


13

OSX में मैं सिम्लिंक की अनुमतियों को स्वयं सेट कर सकता हूं (इसके बजाय -h का उपयोग करने के लिए यह इंगित करता है)। मैन पेज से:

 -h      If the file is a symbolic link, change the mode of the link itself rather than the file that the link points to.

उबंटू 14.04 में मैं एक सिमलिंक की अनुमतियां सेट करने का प्रयास करता हूं, लेकिन यह केवल सिम्लिंक लक्ष्य पर सेट है।

यह एक सिमलिंक से संबंधित /home/nagios/.ssh/someprivatekeyहै /somewhere/else/privatekey, इसलिए अनुमतियाँ ssh के लिए महत्वपूर्ण हैं। इसे कैसे प्राप्त किया जा सकता है?


तो, आपको इस सिमलिंक की आवश्यकता क्यों है?
muru

1
क्या आप सुनिश्चित हैं कि प्रतीकात्मक लिंक पर अनुमतियों के बारे में ssh परवाह करता है और / कहीं और / Privatekey पर अनुमतियाँ नहीं?
रैंडम 832

@ Random832 हां, मैंने गलत निष्कर्ष निकाला हो सकता है, मैं इस बारे में थोड़ा उलझन में था कि ls -lआउटपुट ( lrwxrwxrwx) में अनुमतियों को कैसे प्रदर्शित किया जाता है ।
रे बर्गेमेस्ट्रे

@muru मैं एक (बिल्डसर) डोकर छवि बना रहा था जो सभी प्रकार के सर्वर तक पहुंचने के लिए ssh कुंजी का उपयोग करता है। मैं अलग-अलग कारणों की वजह से निजी कुंजी को अंदर नहीं रखना चाहता (यानी अगर मैं इसे डॉकटर हब पर होस्ट करना चाहता हूं)। इसलिए मैंने इसे सहानुभूति दी है और यह एक वॉल्यूम की ओर इशारा करता है जो केवल एक बार छवि के चलने के बाद घुड़सवार होता है। हालाँकि, यह सोचने के लिए, मैं भी महत्वपूर्ण स्थान को बदल सकता था .ssh/config:)
रे बर्गमेस्ट्रे

जवाबों:


18

संभव नहीं। सिम्लिंक पर अनुमतियाँ निरर्थक होने के बाद से कोई रास्ता नहीं है (सिम्कलिन एक फ़ाइल नहीं है; यह केवल एक फ़ाइल को इंगित करता है)। लिनक्स के साथ ऐसा करने का तरीका हालांकि एसीएल के माध्यम से है ।

सहिष्णु के रूप में समझाया गया है ...

निर्मित प्रतीकात्मक लिंक के लिए फ़ाइल मोड बिट्स के मान अनिर्दिष्ट हैं। POSIX.1-2008 द्वारा निर्दिष्ट सभी इंटरफेस इस तरह व्यवहार करेंगे जैसे कि प्रतीकात्मक लिंक की सामग्री को हमेशा पढ़ा जा सकता है, सिवाय इसके कि फ़ाइल संरचना बिट्स का मान स्टेट संरचना के st_mode फ़ील्ड में वापस अनिर्दिष्ट है।


अंतर यहाँ है: चामोद और चामोद ... यह बीएसडी बनाम लिनक्स है।


यह निश्चित नहीं है कि यह महत्वपूर्ण है लेकिन SSH के बारे में: यह अनुमतियाँ प्राप्त करने के लिए स्टेट (2) का उपयोग करता है , न कि lstat (2) का।

  • स्टेट () पथ द्वारा बताई गई फ़ाइल को आँकता है और buf में भरता है।
  • lstat (), stat () के समान है, सिवाय इसके कि यदि पथ एक प्रतीकात्मक लिंक है, तो लिंक स्वयं स्टेट-एड है, न कि वह फ़ाइल जिसे वह संदर्भित करता है।

2
सीलिंक पर अनुमतियाँ सेट करने की क्षमता नवीनतम संस्करण में भी निर्दिष्ट नहीं है, यह एक बीएसडी विस्तार है।
रैंडम 832

1
@ Random832 हम्म जो अधिक तीखी हो सकती है हाँ। मैंने आज एसओ पर उस बिट को पढ़ा, लेकिन इस पर एक चेक नहीं किया: डी
रिनविंड

4
संयोग से POSIX fchmodatफ़ंक्शन को निर्दिष्ट करता है, जिसका उपयोग प्रतीकात्मक लिंक (वैकल्पिक सुविधा - सिस्टम जो इसे शामिल नहीं करता है, को Linux, रिटर्न एरर EOPNOTSUPP) में बदलने के लिए किया जा सकता है, लेकिन chmodइसका उपयोग करने के लिए कमांड में कुछ भी नहीं है । केवल -RPOSIX में परिभाषित किया गया है।
रैंडम 832

2
लिनक्स पर सहिष्णु अनुमतियाँ अर्थहीन हैं । उन प्रणालियों पर जहां आप उन्हें ( lchmod(2)या fchmodat(2)... के साथ ) बदल सकते हैं , उनके पास एक अर्थ है (अनुमति / अस्वीकार readlink()(पढ़ें) या उनके माध्यम से पथ समाधान (निष्पादित करें))। अनुमतियाँ लिखें हालांकि आमतौर पर आप सिम्लिंक के लक्ष्य को बदल नहीं सकते हैं।
स्टीफन चेजेलस

यूनिक्स आपसे असहमत होगा कि "एक सिमलिंक एक फ़ाइल नहीं है"। एक सिमलिंक एक विशेष फ़ाइल है।
हॉब्स

9

आप नहीं कर सकते। अंतर्निहित chmodसिस्टम कॉल बस लिनक्स में इसका समर्थन नहीं करता है, और उस मामले के लिए, लिनक्स लिंक की अनुमति के बारे में परवाह नहीं करता है। से man chmod:

chmod never changes the permissions of symbolic links; the chmod system
call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic  links  are  never  used.   However, for each
symbolic link listed on the command line, chmod changes the permissions
of  the  pointed-to  file.   In  contrast, chmod ignores symbolic links
encountered during recursive directory traversals.

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


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