Xattr और chattr के बीच अंतर


9

संबंध और बीच क्या अंतर है xattrऔर chattr? मैं जानना चाहता हूं कि जब मैं chattrलिनक्स में एक विशेषता सेट करता हूं कि लिनक्स कर्नेल और इनोड मेटाडेटा के अंदर क्या हो रहा है।


मैंने कल एक संबंधित प्रश्न पर एक लंबा उत्तर लिखा था जो सहायक हो सकता है - unix.stackexchange.com/questions/118840/… । ध्यान दें कि attrकमांड XFS फाइल सिस्टम के लिए है, समतुल्य फाइल सिस्टम स्वतंत्र कमांड हैsetfattr
ग्रीम

जवाबों:


13

लिनक्स पर lsattr/ उसके द्वारा chattrऔर कुछ के द्वारा संचित की जाने वाली विशेषताओं को कुछ फ़ाइल सिस्टम (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsf ...) द्वारा संग्रहीत किया जा सकता है और यहां तक ​​कि CIFS पर चुटकी ली जा सकती है। / SMB (जब POSIX एक्सटेंशन के साथ) झंडे होते हैं। बस बिट्स को एक विशेषता को निष्क्रिय या सक्षम करने के लिए चालू या बंद किया जा सकता है (जैसे अपरिवर्तनीय या संग्रह ...)। उन्हें कैसे संग्रहीत किया जाता है यह फ़ाइल सिस्टम विशिष्ट है, लेकिन आमतौर पर इनोड में 16/32/64 बिट रिकॉर्ड के रूप में।

झंडे की पूरी सूची लिनक्स देशी फाइल सिस्टम (ext2 / 3/4, btrfs ...) पर पाई जाती है, हालांकि सभी झंडे एफएस के सभी पर लागू नहीं होते हैं, और अन्य गैर-मूल FS के लिए, Linux उन्हें समकक्ष के लिए मैप करने की कोशिश करता है इसी फ़ाइल सिस्टम में सुविधाएँ। उदाहरण के लिए, HFS + फ़ाइल सिस्टम पर OSX द्वारा संग्रहीत सिम्युटेबल फ्लैग को लिनक्स में संबंधित अपरिवर्तनीय ध्वज पर मैप किया जाता है chattr। किस ध्वज का समर्थन किस फ़ाइल सिस्टम द्वारा किया जाता है, इस पर शायद ही कोई दस्तावेज़ दर्ज किया गया हो। अक्सर, कर्नेल स्रोत कोड को पढ़ना एकमात्र विकल्प है।

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

कुंजी उदाहरण के लिए हो सकती है: system.posix_acl_accessया user.rsync.%statsystemनाम स्थान (आप के साथ POSIX एसीएल नहीं बदलेगा प्रणाली के लिए आरक्षित है setfattrऔर अधिक के साथ, लेकिन setfacl, POSIX एसीएल सिर्फ कुछ फाइल सिस्टम पर कम से कम बढ़ाया विशेषताओं के रूप में संग्रहीत करने के लिए होता है), जबकि, userनाम स्थान अनुप्रयोगों के द्वारा इस्तेमाल किया जा सकता (यहाँ rsyncअपने --fake-superविकल्प के लिए इसका उपयोग , स्वामित्व या अनुमतियों के बारे में जानकारी संग्रहीत करने के लिए करते हैं जब आप सुपरयुजर नहीं होते)।

फिर, वे कैसे संग्रहीत किए जाते हैं, फाइलसिस्टम विशिष्ट है। अधिक जानकारी के लिए विकीपीडिया देखें ।


क्या lsattr/ chattrगैर के लिए काम करते extफ़ाइल सिस्टम? यदि नहीं, तो आप extलिनक्स पर गैर सिस्टम पर झंडे कैसे बदलेंगे ? साथ ही attrमैन पेज कहता है कि यह XFS के लिए लिखा गया है (भले ही यह मेरे लिए काम करता हो ext4)। मैंने वास्तव में इस कल को देखने में एक लंबा समय बिताया है, अच्छी जानकारी मुश्किल से आती है। कृपया देखें - unix.stackexchange.com/questions/118840/…
ग्रीम

@Gememe, उन सवालों के जवाब मेरे जवाब में हैं। lsattr/chattrफ़ाइल फ़्लैग के लिए हैं। उदाहरण के लिए, सभी फाइल सिस्टम द्वारा सभी झंडों का समर्थन नहीं किया जाता है, उदाहरण के लिए, उनमें से कुछ ऐसे हैं जो सम्पीडन 4 पर काम नहीं करेंगे, लेकिन btrfs पर काम करेंगे।
स्टीफन चेजलस

यदि आप रुचि रखते हैं, तो मैंने कुछ फाइल सिस्टम पर इन झंडों का परीक्षण करने के लिए एक स्क्रिप्ट लिखी और परिणामों को ऊपर दिए गए मेरे उत्तर पर डाल दिया। मुझे उनमें से किसी को भी स्थापित करने / पढ़ने में कोई सफलता नहीं मिली reiserfs
ग्रीम

-1

सब कुछ में बदल गया है inode। जब आप एक फ़ाइल बदलते हैं, तो वास्तव में आप इसे बदल देते हैं inode। स्क्रिप्टिंग के लिए आपके पास एक अच्छी कमांड है:

stat --format=%a yourfile

आप उपयोग कर सकते हैं %variableऔर से एक उपयोगी लौटा सकते हैंinode

लेकिन आपका जवाब:

xattrMacOS chattrपर और linux बॉक्स पर है।

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