macOS Files, Folders, Binaries & Memory
फ़ाइल व्यवस्था लेआउट
/Applications: स्थापित ऐप्स यहाँ होने चाहिए। सभी उपयोगकर्ता उन्हें एक्सेस कर सकेंगे।
/bin: कमांड लाइन बाइनरी
/cores: अगर मौजूद है, तो यह कोर डंप स्टोर करने के लिए उपयोग किया जाता है।
/dev: सब कुछ एक फ़ाइल के रूप में देखा जाता है, इसलिए आप हार्डवेयर डिवाइस यहाँ स्टोर किए गए देख सकते हैं।
/etc: कॉन्फ़िगरेशन फ़ाइलें
/Library: यहाँ प्राथमिकताएँ, कैश और लॉग्स से संबंधित कई उपनिर्देशिकाएँ और फ़ाइलें पाई जा सकती हैं। एक लाइब्रेरी फ़ोल्डर मूल और प्रत्येक उपयोगकर्ता के निर्देशिका में मौजूद है।
/private: अनसंदर्भित लेकिन उल्लिखित फ़ोल्डरों की बहुत सारी प्रतीकात्मक लिंक्स हैं।
/sbin: महत्वपूर्ण सिस्टम बाइनरी (प्रशासन से संबंधित)
/System: OS X को चलाने के लिए फ़ाइल। आपको यहाँ अधिकांशत: केवल Apple विशिष्ट फ़ाइलें मिलेंगी (तीसरे पक्षी नहीं)।
/tmp: फ़ाइलें 3 दिनों के बाद हटा दी जाती हैं (यह /private/tmp का एक सॉफ़्ट लिंक है)
/Users: उपयोगकर्ताओं के लिए होम निर्देशिका।
/usr: कॉन्फ़िग और सिस्टम बाइनरी
/var: लॉग फ़ाइलें
/Volumes: माउंट किए गए ड्राइव्स यहाँ दिखाई देंगे।
/.vol:
stat a.txt
चलाकर आप कुछ इस प्रकार कुछ प्राप्त करेंगे16777223 7545753 -rw-r--r-- 1 username wheel ...
जहाँ पहला नंबर वह वॉल्यूम का आईडी नंबर है जहाँ फ़ाइल मौजूद है और दूसरा एक इनोड नंबर है। आप इस फ़ाइल की सामग्री तक पहुंच सकते हैं /.vol/ के माध्यम से उस जानकारी के साथ चलाकरcat /.vol/16777223/7545753
एप्लिकेशन फ़ोल्डर
सिस्टम एप्लिकेशन
/System/Applications
के तहत स्थित हैंस्थापित एप्लिकेशन आम तौर पर
/Applications
या~/Applications
में स्थापित होते हैंएप्लिकेशन डेटा
/Library/Application Support
में पाया जा सकता है जो रूट के रूप में चल रहे एप्लिकेशनों के लिए और~/Library/Application Support
उपयोगकर्ता के रूप में चल रहे एप्लिकेशनों के लिए।संयुक्त तृतीय-पक्ष एप्लिकेशन डेमन्स जो रूट के रूप में चलने की आवश्यकता हैं आम तौर पर
/Library/PrivilegedHelperTools/
में स्थित होते हैंसैंडबॉक्स एप्स को
~/Library/Containers
फ़ोल्डर में मैप किया जाता है। प्रत्येक एप्लिकेशन के पास एक फ़ोल्डर होता है जिसका नाम एप्लिकेशन के बंडल आईडी (com.apple.Safari
) के अनुसार होता है।कर्नेल
/System/Library/Kernels/kernel
में स्थित हैApple के कर्नेल एक्सटेंशन
/System/Library/Extensions
में स्थित हैंतृतीय-पक्ष कर्नेल एक्सटेंशन
/Library/Extensions
में स्टोर होते हैं
संवेदनशील जानकारी वाली फ़ाइलें
MacOS जैसी जगहों पर पासवर्ड जैसी जानकारी स्टोर करता है:
pagemacOS Sensitive Locations & Interesting Daemonsवल्नरेबल पीकेज इंस्टॉलर्स
pagemacOS Installers AbuseOS X विशेष एक्सटेंशन्स
.dmg
: Apple Disk Image फ़ाइलें इंस्टॉलर्स के लिए बहुत आम हैं।.kext
: यह एक विशिष्ट संरचना का पालन करना चाहिए और यह ड्राइवर का OS X संस्करण है। (यह एक बंडल है).plist
: XML या बाइनरी स्वरूप में जानकारी स्टोर करता है।XML या बाइनरी हो सकता है। बाइनरी वाले को इस प्रकार से पढ़ा जा सकता है:
defaults read config.plist
/usr/libexec/PlistBuddy -c print config.plsit
plutil -p ~/Library/Preferences/com.apple.screensaver.plist
plutil -convert xml1 ~/Library/Preferences/com.apple.screensaver.plist -o -
plutil -convert json ~/Library/Preferences/com.apple.screensaver.plist -o -
.app
: एप्पल एप्लिकेशन जो निर्देशिका संरचना का पालन करते हैं (यह एक बंडल है)।.dylib
: डायनामिक लाइब्रेरीज (जैसे Windows DLL फ़ाइलें).pkg
: xar (eXtensible Archive format) के समान हैं। इन फ़ाइलों के सामग्री को इंस्टॉल करने के लिए इंस्टॉलर कमांड का उपयोग किया जा सकता है।.DS_Store
: इस फ़ोल्डर में प्रत्येक डायरेक्टरी पर होती है, यह डायरेक्टरी की विशेषताएँ और कस्टमाइजेशन को सहेजती है।.Spotlight-V100
: यह फ़ोल्डर प्रत्येक वॉल्यूम के रूट डायरेक्टरी पर दिखाई देता है।.metadata_never_index
: अगर इस फ़ाइल को किसी वॉल्यूम के रूट में रखा गया है तो Spotlight उस वॉल्यूम को इंडेक्स नहीं करेगा।.noindex
: इस एक्सटेंशन वाली फ़ाइलें और फ़ोल्डर Spotlight द्वारा इंडेक्स नहीं की जाएंगी।.sdef
: बंडल्स के भीतर फ़ाइलें निर्दिष्ट करती हैं कि किस प्रकार से एप्लिकेशन के साथ AppleScript से बातचीत की जा सकती है।
macOS बंडल्स
एक बंडल एक डायरेक्टरी है जो फाइंडर में एक वस्तु की तरह दिखती है (एक बंडल उदाहरण हैं *.app
फ़ाइलें)।
Dyld Shared Library Cache (SLC)
macOS (और iOS) में सभी सिस्टम साझा लाइब्रेरी, जैसे फ़्रेमवर्क और dylibs, को एक एकल फ़ाइल में मिलाकर रखा गया है, जिसे **
ध्यान दें कि यदि dyld_shared_cache_util
टूल काम नहीं करता है, तो आप shared dyld binary को Hopper में पास कर सकते हैं और Hopper सभी पुस्तकालयों की पहचान करने में सक्षम होगा और आपको जिसे आप जांचना चाहते हैं उसे चुनने देगा:
कुछ निकालने वाले dylibs काम नहीं करेंगे क्योंकि dylibs पूर्व-लिंक होते हैं जिसके कारण वे अज्ञात पतों पर जा सकते हैं।
एक इम्युलेटर का उपयोग करके Xcode में *OS उपकरणों के साझा लाइब्रेरी कैश को डाउनलोड करना संभव है। वे इस प्रकार डाउनलोड किए जाएंगे: ls $HOME/Library/Developer/Xcode/<*>OS\ DeviceSupport/<version>/Symbols/System/Library/Caches/com.apple.dyld/
, जैसे:$HOME/Library/Developer/Xcode/iOS\ DeviceSupport/14.1\ (18A8395)/Symbols/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64
SLC को मैप करना
dyld
यह जानने के लिए सिस्कॉल shared_region_check_np
का उपयोग करता है कि क्या SLC को मैप किया गया है (जो पता देता है) और shared_region_map_and_slide_np
का उपयोग करता है SLC को मैप करने के लिए।
ध्यान दें कि यदि SLC को पहली बार उपयोग किया जाता है, तो सभी प्रक्रियाएं एक ही प्रतिलिपि का उपयोग करती हैं, जो यदि हमलावार प्रक्रियाएं सिस्टम में चलाने में सक्षम होती हैं तो ASLR सुरक्षा को हटा देती है। यह वास्तव में पिछले में उत्पीड़ित किया गया था और साझा क्षेत्र पेजर के साथ सुधार किया गया था।
शाखा पूल छोटे Mach-O dylibs हैं जो छवि मैपिंग के बीच छोटे अंतरिक्ष बनाते हैं जिससे फ़ंक्शनों को अंतर्दाखिल करना असंभव हो जाता है।
SLC को ओवरराइड करें
इस्तेमाल करके यह एनवायरनमेंट वेरिएबल्स:
DYLD_DHARED_REGION=private DYLD_SHARED_CACHE_DIR=</path/dir> DYLD_SHARED_CACHE_DONT_VALIDATE=1
-> यह एक नया साझा लाइब्रेरी कैश लोड करने की अनुमति देगाDYLD_SHARED_CACHE_DIR=avoid
और मैन्युअली लाइब्रेरी को साझा कैश के साथ सिमलिंक्स के रूप में पुन: स्थापित करें (आपको उन्हें निकालने की आवश्यकता होगी)
विशेष फ़ाइल अनुमतियाँ
फ़ोल्डर अनुमतियाँ
एक फ़ोल्डर में, पढ़ने से उसे सूची बनाने की अनुमति होती है, लिखने से उसे हटाने और फ़ाइलें लिखने की अनुमति होती है, और क्रियान्वयन फ़ोल्डर को चलने की अनुमति देता है। इसलिए, उदाहरण के लिए, एक उपयोगकर्ता को फ़ाइल पर पढ़ने की अनुमति होने के बावजूद जब वह उस डायरेक्टरी में क्रियान्वयन की अनुमति नहीं है तो वह फ़ाइल पढ़ नहीं सकेगा।
फ़्लैग संशोधक
कुछ फ़्लैग हैं जो फ़ाइल में सेट किए जा सकते हैं जो फ़ाइल का व्यवहार अलग बना देंगे। आप फ़ाइलों के फ़्लैग की जाँच कर सकते हैं जोड़ने के लिए ls -lO /path/directory
uchg
: uchange फ़्लैग के रूप में जाना जाता है जो किसी भी क्रिया को बदलने या हटाने से रोकेगा। इसे सेट करने के लिए:chflags uchg file.txt
रूट उपयोगकर्ता फ़्लैग को हटा सकता है और फ़ाइल को संशोधित कर सकता है
restricted
: यह फ़्लैग फ़ाइल को SIP द्वारा संरक्षित बना देता है (आप इस फ़्लैग को फ़ाइल में नहीं जोड़ सकते हैं)।Sticky bit
: यदि एक डायरेक्टरी में sticky bit है, केवल डायरेक्टरी के मालिक या रूट फ़ाइलों को नाम बदल सकते हैं या हटा सकते हैं। सामान्यत: यह /tmp डायरेक्टरी पर सेट किया जाता है ताकि साधारण उपयोगकर्ताएं अन्य उपयोगकर्ताओं की फ़ाइलों को हटाने या हटाने से रोक सकें।
सभी फ़्लैग फ़ाइल sys/stat.h
में पाए जा सकते हैं (इसे mdfind stat.h | grep stat.h
का उपयोग करके खोजें) और ये हैं:
UF_SETTABLE
0x0000ffff: मालिक परिवर्तनीय फ़्लैग का मास्क।UF_NODUMP
0x00000001: फ़ाइल को डंप न करें।UF_IMMUTABLE
0x00000002: फ़ाइल में परिवर्तन नहीं किया जा सकता।UF_APPEND
0x00000004: फ़ाइल में लिखने केवल जोड़ सकते हैं।UF_OPAQUE
0x00000008: डायरेक्टरी यूनियन के संबंध में अपारदर्शी है।UF_COMPRESSED
0x00000020: फ़ाइल संकुचित है (कुछ फ़ाइल-सिस्टम)।UF_TRACKED
0x00000040: इस सेट किए गए फ़ाइलों के लिए हटाने/नाम बदलने के लिए कोई सूचनाएँ नहीं।UF_DATAVAULT
0x00000080: पढ़ने और लिखने के लिए अधिकार आवश्यक है।UF_HIDDEN
0x00008000: इस आइटम को GUI में प्रदर्शित न करने की संकेत है।SF_SUPPORTED
0x009f0000: सुपरयूजर समर्थित फ़्लैग का मास्क।SF_SETTABLE
0x3fff0000: सुपरयूजर परिवर्तनीय फ़्लैग का मास्क।SF_SYNTHETIC
0xc0000000: सिस्टम केवल पढ़ने योग्य सिंथेटिक फ़्लैग का मास्क।SF_ARCHIVED
0x00010000: फ़ाइल संग्रहीत है।SF_IMMUTABLE
0x00020000: फ़ाइल में परिवर्तन नहीं किया जा सकता।SF_APPEND
0x00040000: फ़ाइल में लिखने केवल जोड़ सकते हैं।SF_RESTRICTED
0x00080000: लिखने के लिए अधिकार आवश्यक है।SF_NOUNLINK
0x00100000: आइटम को हटाया, नाम बदला या माउंट किया नहीं जा सकता।SF_FIRMLINK
0x00800000: फ़ाइल एक फर्मलिंक है।SF_DATALESS
0x40000000: फ़ाइल डेटालेस ऑब्जेक्ट है।
फ़ाइल ACLs
फ़ाइल ACLs में ACE (Access Control Entries) होते हैं जहां विभिन्न उपयोगकर्ताओं को अधिक सूक्ष्म अनुमतियाँ दी जा सकती हैं।
एक डायरेक्टरी को ये अनुमतियाँ प्रदान की जा सकती हैं: सूची
, खोज
, फ़ाइल जोड़ें
, उप-डायरेक्टरी जोड़ें
, बच्चे को हटाएं
, बच्चे को हटाएं
।
और एक फ़ाइल को: पढ़ें
, लिखें
, जोड़ें
, क्रियान्वयन
।
जब फ़ाइल में ACLs होते हैं तो आप अनुमतियों को सूचीबद्ध करते समय "+" को पाएंगे जैसे कि:
आप निम्नलिखित के साथ फ़ाइल की ACLs पढ़ सकते हैं:
आप सभी फ़ाइलें एसीएल के साथ निम्नलिखित के साथ ढूंढ सकते हैं (यह बहुत ही धीमा है):
विस्तृत गुण
विस्तृत गुणों के पास एक नाम और इच्छित मान होता है, और ls -@
का उपयोग करके देखा जा सकता है और xattr
कमांड का उपयोग करके परिवर्तित किया जा सकता है। कुछ सामान्य विस्तृत गुण हैं:
com.apple.resourceFork
: संसाधन फोर्क संगतता। फ़ाइल/..namedfork/rsrc के रूप में भी दिखाई देता हैcom.apple.quarantine
: MacOS: गेटकीपर क्वारंटाइन तंत्र (III/6)metadata:*
: MacOS: विभिन्न मेटाडेटा, जैसे_backup_excludeItem
, याkMD*
com.apple.lastuseddate
(#PS): अंतिम फ़ाइल उपयोग तिथिcom.apple.FinderInfo
: MacOS: फाइंडर सूचना (जैसे, रंग टैग)com.apple.TextEncoding
: ASCII टेक्स्ट फ़ाइलों की पाठ कोडिंग को निर्दिष्ट करता हैcom.apple.logd.metadata
:/var/db/diagnostics
में फ़ाइलों पर logd द्वारा उपयोग किया जाता हैcom.apple.genstore.*
: पीढ़ीवादी संग्रहण (/.DocumentRevisions-V100
फ़ाइल सिस्टम के रूट में)com.apple.rootless
: MacOS: सिस्टम अखंडता संरक्षण द्वारा फ़ाइल को लेबल करने के लिए उपयोग किया जाता है (III/10)com.apple.uuidb.boot-uuid
: बूट युयुआईडी के साथ बूट युगों के logd चिह्नित करने के लिए उपयोग किया जाता हैcom.apple.decmpfs
: MacOS: पारदर्शी फ़ाइल संपीड़न (II/7)com.apple.cprotect
: *OS: प्रति-फ़ाइल एन्क्रिप्शन डेटा (III/11)com.apple.installd.*
: *OS: installd द्वारा उपयोग किए जाने वाले मेटाडेटा, जैसे,installType
,uniqueInstallID
संसाधन फोर्क्स | macOS ADS
यह मैकओएस मशीनों में विभिन्न डेटा स्ट्रीम्स प्राप्त करने का एक तरीका है। आप एक फ़ाइल के अंदर com.apple.ResourceFork नामक विस्तृत गुण में सामग्री सहेज सकते हैं इसे file/..namedfork/rsrc में सहेजकर।
आप इस विस्तृत विशेषता को शामिल सभी फ़ाइलें खोज सकते हैं इसके साथ:
decmpfs
विस्तारित विशेषता com.apple.decmpfs
इसका संकेत देती है कि फ़ाइल एन्क्रिप्टेड रूप से स्टोर की गई है, ls -l
एक आकार की 0 की रिपोर्ट करेगा और संपीड़ित डेटा इस विशेषता के अंदर है। जब भी फ़ाइल तक पहुँचा जाता है, तो यह मेमोरी में डिक्रिप्ट हो जाएगी।
यह विशेषता ls -lO
के साथ देखी जा सकती है, जिसे संपीड़ित बताया जाता है क्योंकि संपीड़ित फ़ाइलें भी झंझट UF_COMPRESSED
के ध्वज के साथ टैग की जाती हैं। यदि किसी संपीड़ित फ़ाइल को chflags nocompressed </path/to/file>
के साथ हटाया जाता है, तो सिस्टम को पता नहीं चलेगा कि फ़ाइल संपीड़ित थी और इसलिए यह डिकंप्रेस और डेटा तक पहुँचने में सक्षम नहीं होगा (यह सोचेगा कि यह वास्तव में खाली है)।
उपकरण afscexpand का उपयोग एक डाइल को डिकंप्रेस करने के लिए किया जा सकता है।
सार्वभौमिक बाइनरी और Mach-o प्रारूप
Mac OS बाइनरी आम तौर पर सार्वभौमिक बाइनरी के रूप में कॉम्पाइल किए जाते हैं। एक सार्वभौमिक बाइनरी में एक ही फ़ाइल में कई वास्तुकलाएँ समर्थित कर सकता है।
pagemacOS Universal binaries & Mach-O FormatmacOS मेमोरी डंपिंग
pagemacOS Memory Dumpingजोखिम श्रेणी फ़ाइलें Mac OS
निर्देशिका /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System
जहाँ विभिन्न फ़ाइल एक्सटेंशन के साथ जुड़े जोखिम के बारे में जानकारी संग्रहित है। इस निर्देशिका में फ़ाइलों को विभिन्न जोखिम स्तरों में वर्गीकृत किया गया है, जो सफारी को डाउनलोड करने के बाद इन फ़ाइलों को कैसे हैंडल करना है इस पर प्रभाव डालता है। इन श्रेणियों में निम्नलिखित शामिल हैं:
LSRiskCategorySafe: इस श्रेणी में फ़ाइलें पूरी तरह सुरक्षित मानी जाती हैं। सफारी इन फ़ाइलों को डाउनलोड होने के बाद स्वचालित रूप से खोलेगा।
LSRiskCategoryNeutral: इन फ़ाइलों के साथ कोई चेतावनी नहीं होती है और सफारी द्वारा स्वचालित रूप से नहीं खोली जाती है।
LSRiskCategoryUnsafeExecutable: इस श्रेणी के तहत फ़ाइलें एक चेतावनी प्रेरित करती हैं जिसमें यह बताया जाता है कि फ़ाइल एक एप्लिकेशन है। यह उपयोगकर्ता को सूचित करने के लिए एक सुरक्षा उपाय के रूप में काम करता है।
LSRiskCategoryMayContainUnsafeExecutable: यह श्रेणी फ़ाइलों के लिए है, जैसे कि आर्काइव, जो एक एक्सीक्यूटेबल को समाहित कर सकते हैं। सफारी एक चेतावनी प्रेरित करेगा जब तक यह सत्यापित नहीं कर सकता कि सभी सामग्री सुरक्षित या न्यूट्रल है।
लॉग फ़ाइलें
$HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2
: डाउनलोड की गई फ़ाइलों के बारे में जानकारी शामिल है, जैसे कि वहाँ से डाउनलोड की गई URL।/var/log/system.log
: OSX सिस्टम का मुख्य लॉग। com.apple.syslogd.plist सिस्टम लॉगिंग के निष्पादन के लिए जिम्मेदार है (आप "com.apple.syslogd" कोlaunchctl list
में खोजकर देख सकते हैं कि क्या यह अक्षम है)।/private/var/log/asl/*.asl
: ये एप्पल सिस्टम लॉग हैं जिनमें दिलचस्प जानकारी हो सकती है।$HOME/Library/Preferences/com.apple.recentitems.plist
: "फाइंडर" के माध्यम से हाल ही में एक्सेस की गई फ़ाइलें और एप्लिकेशन स्टोर करता है।$HOME/Library/Preferences/com.apple.loginitems.plsit
: सिस्टम स्टार्टअप पर लॉन्च करने के लिए आइटम स्टोर करता है।$HOME/Library/Logs/DiskUtility.log
: DiskUtility ऐप के लिए लॉग फ़ाइल (ड्राइव्स के बारे में जानकारी, इसमें USB भी शामिल हैं)।/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
: वायरलेस एक्सेस पॉइंट्स के बारे में डेटा।/private/var/db/launchd.db/com.apple.launchd/overrides.plist
: निष्क्रिय किए गए डेमन्स की सूची।
Last updated