ساختار فایل سیستم در لینوکس
ساختار درختی فایل سیستم در لینوکس به شکلی سلسله مراتبی از پوشهها و فایلها است که در آن پوشهها درون یکدیگر نمایش داده میشوند و فایلها در داخل پوشهها قرار میگیرند. فایلها شامل اطلاعات مربوط به برنامهها، تنظیمات و دادههای مختلفی هستند که در دایرکتوریهای مختلف سیستم قرار دارند. دایرکتوریها نیز مکان هایی هستند که میتوانند فایلها و دایرکتوریهای دیگر را درون خود نگهداری کنند.این ساختار از یک ریشه اصلی به نام “/” (اِسلش) که شبیه به شاخههای یک درخت شکل گرفته است، شروع میشود.این ریشه یک پوشه است که همه فایلها و دایرکتوریهای سیستم را در زیر این ریشه قرار میدهد.
ساختار کلی را در شکل زیر میتوانید مشاهده کنید:
در این ساختار، هر پوشه میتواند شامل زیر پوشههای دیگری باشد که درون خودشان هم پوشههای دیگری وجود دارد و این فرایند به همین صورت تکرار میشود تا به داخلیترین پوشهها برسیم. برای نمایش این ساختار، میتوان از دستور “tree” در خط فرمان لینوکس استفاده کرد.
برای نصب و اجرا به ترتیب از دستورات زیر استفاده کنید.
sudo apt install tree
sudo tree | less
دایرکتوریهای سطح بالایی ساختار درختی فایل سیستم، عموماً شامل دایرکتوریهایی مانند /bin، /dev، /etc، /home، /lib، /root، /sbin، /usr، و /var هستند. هر کدام از این دایرکتوریها، مجموعهای از فایلها و دایرکتوریهای مختلف را درون خود نگهداری میکنند.
همچنین در لینوکس، هر پوشه و فایل دارای دسترسیهای مختلفی هستند که مشخص میکند کدام کاربران و گروهها میتوانند آنها را مشاهده، ویرایش یا اجرا کنند. این دسترسیها به صورت سه حرفی نمایش داده میشوند، به ترتیب به معنای دسترسیهای خواندن (Read)، نوشتن (Write) و اجرا (Execute) برای کاربر (User)، گروه (Group) و دیگران (Others) هستند.در مقالات آینده نیز راجب دسترسی ها در فایل سیستم توضیح داده خواهد شد.
دایرکتوریهای زیرمجموعهی / که بخشی از ساختار درختی فایل سیستم لینوکس هستند، عبارتند از:
/bin
:
در این پوشه، فایلهای اجرایی اصلی سیستم عامل لینوکس قرار میگیرند. این فایلها عمدتاً برای اجرای دستورالعملهای سیستم و برنامههای کاربردی مهم استفاده میشوند. بهعنوان مثال، دستور ls
برای نمایش محتوای دایرکتوریها، در این پوشه ذخیره شده است. برنامههایی که در این پوشه قرار دارند، باید در هر زمان و در هر مرحله از اجرای سیستم عامل قابل دسترس باشند. در نتیجه، این پوشه باید در هر سیستم عامل لینوکس موجود باشد.
/boot
:
در این دایرکتوری فایلهای مربوط به بوت و راهاندازی سیستم عامل قرار دارند. این شامل فایلهای مانند بوتلودر، kernel و initramfs است.
/dev
:
در این دایرکتوری، فایلهایی که با دستگاههای سختافزاری مرتبط هستند، مانند درایوها، دستگاههای ورودی و خروجی و دستگاههای دیگر، قرار میگیرند. برنامههایی که برای دسترسی به دستگاههای سختافزاری به این دایرکتوری مراجعه میکنند.
/etc
:
در این دایرکتوری فایلهای پیکربندی سیستم عامل قرار دارند. این شامل تنظیمات سیستم، کاربران، شبکه، سرویسها و برنامههایی که به صورت سیستمی در حال اجرا هستند، میباشد.
/home
:
در این دایرکتوری، دایرکتوریهای خاص هر کاربر قرار دارند. به این ترتیب، هر کاربر میتواند فایلهای خود را در دایرکتوری خود ذخیره کرده و به آنها دسترسی داشته باشد.
/lib:
در این دایرکتوری کتابخانههای مورد نیاز برنامههای سیستمی و کرنل سیستم عامل است. این کتابخانهها در حقیقت فایلهای اجرایی هستند که از قابلیتهای سیستم عامل استفاده میکنند و به برنامههای دیگر کمک میکنند تا در سیستم عامل به درستی اجرا شوند. این کتابخانهها برای مدیریت حافظه، ارتباط با سختافزارهای سیستم، رمزنگاری و رمزگشایی و بسیاری از وظایف دیگر استفاده میشوند.
/lost+found
:
این دایرکتوری به منظور بازیابی فایلهای خراب یا از بین رفته در ساختار فایلهای سیستم عامل لینوکس قرار دارد.
/media
:
در این دایرکتوری دستگاههای قابل حمل (مانند فلشدرایو، دیسک خارجی و …) به عنوان پوشههای موقتی اضافه میشوند.
/mnt:
یکی از دایرکتوریهای استاندارد لینوکس است که برای اتصال دستگاههای فایل سیستم به سیستم عامل مورد استفاده قرار میگیرد. به عبارت دیگر، این دایرکتوری برای اتصال دستگاههای ذخیرهسازی از جمله هارددیسک، فلش درایو، CD/DVD و … به سیستم عامل استفاده میشود.
/opt
:
این دایرکتوری شامل برنامههایی است که به صورت مستقل نصب شدهاند و برای نصب این برنامهها نیاز به تغییرات در سیستم عامل نیست.
/proc
:
در این دایرکتوری اطلاعات در مورد فرآیندها و سیستم قرار دارد. این دایرکتوری به صورت مجازی ایجاد شده است و فایلهای آن به صورت پویا تولید میشوند.
/root
:
در این دایرکتوری پوشهی خانهی کاربر root (یعنی کاربر سیستمی) قرار دارد.
/run
:
این دایرکتوری شامل فایلهای موقتی است که برای اجرای فرآیندهای سیستم لینوکس مورد استفاده قرار میگیرند.
/sbin
:
شامل برنامههای اجرایی (executable) است که برای اجرای وظایف مدیریتی (administrative tasks) و تنظیمات سیستمی (system configurations) مورد استفاده قرار میگیرند. این برنامهها معمولاً توسط کاربران معمولی قابل دسترسی نیستند و فقط توسط کاربر root یا با استفاده از sudo قابل اجرا هستند
/snap
:
در این دایرکتوری برنامههایی که بر اساس فناوری snap ایجاد شدهاند و برای نصب آنها نیاز به نصب پیشنیازهایی نیست، ذخیره میشوند.
/srv
:
در این دایرکتوری فایلهایی که برای ارائهی خدمات سرور مورد استفاده قرار میگیرند ذخیره میشوند.
/sys
:
در این دایرکتوری اطلاعات در مورد دستگاههای سختافزاری سیستم قرار دارد. این دایرکتوری نیز به صورت مجازی ایجاد شده است و فایلهای آن به صورت پویا تولید میشوند.
/tmp
:
در این دایرکتوری فایلهای موقتی ساخته شده توسط برنامهها و سیستم ذخیره میشوند. فایلهای موقتی در هر بار راهاندازی سیستم حذف میشوند.
/usr
:
این دایرکتوری شامل برنامههای نصب شده و منابع دیگری است که به صورت مشترک برای تمام کاربران در دسترس است.
/var
:
در این دایرکتوری اطلاعاتی که به صورت پویا تغییر میکنند (مانند فایلهای لاگ و اطلاعات دیتابیس) ذخیره میشوند.