سلسه مراتب فایل ها در اندروید

با توجه به اینکه اندروید از هسته ی لینوکس استفاده می کند، اگر شما با ساختار سیستم های مبتنی بر یونیکس آشنا باشید ساختار سلسله مراتبی فایل های اندروید را بهتر درک می کنید. برای کسانی که چندان با این ساختار آشنا نیستند، اطلاعاتی را بیان می کنیم.

در لینوکس، سلسه مراتب فایل ها به صورت یک درخت است که بالاترین نقطه ی آن به عنوان ریشه (root) مشخص شده است. این مفهوم با ساختار سازمان دهی فایل ها در درایو ها (همانند آنچه در windows ) است، متفاوت است. سیستم فایل چه به صورت محلی (local) باشد و چه به صورت راه دور(remote)، در هر دو صورت در زیر root نمایش داده می شوند. سلسه مراتب فایل ها در اندروید، نسخه سفارشی شده از این سلسله مراتب فایل در لینوکس است. بر اساس کمپانی سازنده دستگاه و نسخه لینوکس پایه، ساختار این سلسله مراتب ممکن است تغییراتی جزئی داشته باشد. در ادامه لیستی از پوشه های مهمی که معمولا در بیشتر دستگاه های اندرویدی وجود دارند را بررسی می کنیم، البته برخی از پوشه ها با دسترسی root قابل مشاهده هستند (root کردن فرآیند بدست آوردن سطح دسترسی بالا در دستگاه های اندرویدی است) :

  • /root

همانطور که از نام آن مشخص است، این پارتیشن حاوی اطلاعات و فایل هایی است که برای بوت شدن دستگاه لازم است.همچنین شامل اطلاعات هسته و دیسک RAM نیز می شود و بدون وجود این پارتیشن، دستگاه نمی توانند پروسه هایش را آغاز کند.

  • /system

این پارتیشن شامل همه ی فایل های مربوط به سیستم به غیر از آنهایی که به هسته و دیسک RAM مربوط می شوند، می باشد. این پوشه نباید هرگز پاک شود زیرا بدون آن نیز دستگاه نمی تواند بوت شود. برای مشاهده محتویات این پوشه به پوشه data و سپس پوشه system می رویم و با استفاده از دستور ls (همانند تصویر) محتویات آن را مشاهده می کنیم .

  • /recovery

این پوشه برای backup ها استفاده می شود و به دستگاه اجازه می دهد که در حالت recovery mode بوت شود. در این حالت، شما می توانید ابزارهایی را برای تعمیر تلفن تان بیابید. (برای مطالعه درباره محیط ریکاوری در سیستم عامل اندروید و همچنین برای آشنایی با نحوه ورود به محیط ریکاوری در گوشی های مختلف می توانید به آدرس زیر مراجعه بفرمایید.)

https://mobilekomak.com/howto/ورود-حالت-ریکاوری-recovery-mode

  • /data

این پارتیشن حاوی داده های هر برنامه کاربردی می باشد. بیشتر دادها هایی که متعلق به کاربر است مانند مخاطبان، پیامک ها و شماره تلفن های شماره گیری شده در این پوشه ذخیره می شوند. برای دیدن محتویات این پوشه، می توانیم مانند تصویر عمل کنیم:

  • /cache

این پوشه برای ذخیره ی داده ها مکررا مورد استفاده قرار می گیرد و همچنین ذخیره برخی از log ها برای بازیابی سریع تر، مورد استفاده قرار می گیرد.

 

  • /misc

همانطور که از نام این پوشه مشخص است، این پوشه حاوی اطلاعاتی درباره تنظیمات متفرقه می باشد. این تنظیمات اغلب اطلاعاتی مانند روشن یا خاموش بودن دستگاه، اطلاعاتی درباره تنظیمات سخت افزاری، تنظیمات USB و غیره را شامل می شوند که از طریق این پوشه قابل دسترسی می باشند.

 

  • /sdcard

این پوشه تمام اطلاعات موجود بر روی sdcard را نگهداری می کند. این پوشه به دلیل اینکه شامل اطلاعاتی مانند تصاویر، ویدئوها، قایل ها و داکیومنت ها و غیره می باشد، بسیار با ارزش است.

 

سیستم فایل اندروید

یک سیستم فایل، راه هایی است که در آن فایل ها نامگذاری می شوند، ذخیره می شوند، بازیابی می شوند و همچنین بر روی یک دیسک ذخیره سازی یا پارتیشن، به روز می شوند. به عبارتی دیگر، روش مرتب سازی فایل های در دیسک هستند.

در اندروید هر پارتیشن می تواند به وسیله یک نوع سیستم فایل متفاوت مدیریت شود و هر سیستم فایل قوانین خودش را برای مدیریت فایل ها تعریف می کند. بر اساس قوانین تعریف شده، هر سیستم فایل سرعت متفاوتی را برای بازگردانی، امنیت، اندازه و غیره ارائه می دهد. همانند لینوکس، اندروید نیز از سیستم فایل های مختلفی استفاده می کند.

سیستم فایل هایی که توسط اندروید پشتیبانی می شوند از طریق بررسی محتویات فایل filesystems که در پوشه proc موجود است، قابل رؤیت است. با استفاده از دستور cat /proc/systemfiles می توان محتویات این فایل را مشاهده کرد :

در خروجی حاصل شده، ستون اول mount شدن یک سیستم فایل به دستگاه را نشان می دهد. اگر عبارت OPEFW در این ستون نشان داده شود، به این معنی است که mount به دستگاه صورت نگرفته است. ستون دوم، لیستی از همه سیستم فایل های موجود بر روی دستگاه را نشان می دهد.

سیستم فایل های زیادی هستند که توسط سیستم عامل لینوکس  پشتیبانی می شوند که هر کدام کاربرد خاص خود را دارند، برای مثال :

  • فایل سیستم‌های قراردادی مرتبط با هارد دیسک : ext2, ext3, ext4, XFS, Btrfs, JFS, NTFS
  • فایل سیستم‌های ذخیره سازی فلش : ubifs, JFFS2, YAFFS
  • فایل سیستم‌های مرتبط با دیتابیس
  • و فایل سیستم‌های مقاصد خاص : procfs, sysfs, tmpfs, debugfs

 

در ادامه به صورت مختصر سیستم فایل های مهم را بررسی خواهیم کرد :

  • سیستم فایل root ( rootfs ) : این سیستم فایل یکی از اجزای اصلی اندروید و حاوی تمام اطلاعاتی است که برای راه اندازی دستگاه لازم است. هنگامی که دستگاه فرآیند بوت را شروع می کند، به دسترسی به بسیاری از فایل های هسته نیاز دارد بنابراین سیستم فایل root را mount می کند. همانطور که در خروجی قبلی فرمان mount نشان داده شده است، این سیستم فایل در / (پوشه root) نصب شده است. از این رو، از طریق این سیستم فایل است که همه سیستم فایل های دیگر به تدریج می شوند پس اگر این سیستم فایل با مشکل مواجه شود، دستگاه نمی تواند بوت شود.

 

  • سیستم فایل sysfs : این سیستم فایل پوشه ی /sys را mount می کند که حاوی اطلاعاتی درباره پیکربندی دستگاه است. خروجی زیر پوشه های مختلف را در پوشه sys در یک دستگاه اندروید نشان می دهد:

 

  • سیستم فایل devpts : این سیستم فایل یک رابط را برای جلسه ترمینال در یک دستگاه اندروید ارائه می دهد. این در / dev / pts نصب شده است. هر زمان که یک اتصال ترمینال برقرار می شود، مثلا زمانی که یک shell adb به یک دستگاه اندرویدی متصل است، یک نود جدید تحت / dev / pts ایجاد می شود.

 

  • سیستم فایل cgroup : این سیستم فایل برای کنترل گروه ها است و دستگاه های Android از این سیستم فایل برای ردیابی کار خود استفاده می کنند. آن ها مسئول جمع کردن وظایف و پیگیری آنها می باشند.

 

  • سیستم فایل proc : این سیستم فایل حاوی اطلاعاتی درباره ساختار داده های هسته، پردازش ها و سایر اطلاعات مرتبط با سیستم در زیر پوشه /proc است. به عنوان مثال،  /proc/cpuinfo اطلاعات مربوط به CPU دستگاه را نشان می دهد.

 

  • سیستم فایل tmpfs : سیستم فایل یک مکان ذخیره سازی موقت در دستگاه است که فایل ها را در RAM (حافظه دائمی) ذخیره می کند. مزیت اصلی استفاده از RAM دسترسی سریع و بازیابی است. اما، هنگامی که دستگاه دوباره راه اندازی یا خاموش شود، این داده ها دیگر قابل دسترسی نخواهد بود.

 

نویسنده و مترجم : مریم مکاریان خراسانی

 

منبع :

 

  • Practical Mobile Forensics,Second Edition,Copyright © 2016,Heather Mahalik and Rohit Tamma and Satish Bommisetty,Published by Packt Publishing Ltd.
  • Mobile Application Penetration Testing,Copyright © 2016,Vijay Kumar Velu,Published by Packt Publishing Ltd.
  • Android Security Internals,Copyright © 2015, Nikolay Elenkov, Published by no starch press Inc
  • https://sokanacademy.com/courses/linux/1633/