بخش ۸ – ساختار درختی فایلها و استاندارد FHS
۱. مقدمه
لینوکس برخلاف ویندوز ساختار فایلهاش بر اساس یک درخت یکتا ساخته شده.
در ویندوز معمولاً چند درایو داری (C:
, D:
) ولی در لینوکس همهچیز از یک نقطه شروع میشه:
/
این علامت اسلش (forward slash) ریشه (Root) فایلسیستم هست و همه مسیرها از همینجا منشعب میشن.
برای اینکه همه توزیعهای لینوکس قابل پیشبینی و سازگار باشن، یک استاندارد وجود داره به نام:
FHS – Filesystem Hierarchy Standard
این استاندارد مشخص میکنه هر پوشه در لینوکس برای چه چیزیه و چه دادهای داخلش باید باشه.
۲. نگاه کلی به ساختار درختی
وقتی در دستور زیر رو اجرا میکنی:
ls /
معمولاً چیزی شبیه زیر میبینی:
bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
هرکدوم از این پوشهها یک نقش خاص دارن. بیایید تکتکشون رو بررسی کنیم.
۳. معرفی شاخههای اصلی FHS
۳.۱. / (Root)
- بالاترین سطح فایلسیستم.
- همهٔ مسیرها از اینجا شروع میشن.
- فقط کاربر Root میتونه محتویات اصلی اینجا رو تغییر بده.
۳.۲. /bin
- مخفف binaries → فایلهای اجرایی پایه که برای همه کاربران ضروری هستن.
- مثالها:
/bin/ls
/bin/cp
/bin/mkdir
- این برنامهها حتی در حالت تککاربره (single-user mode) هم باید موجود باشن.
۳.۳. /boot
- حاوی فایلهای بوت سیستم.
- شامل کرنل (
vmlinuz
)، initrd و فایل پیکربندی گراب (grub.cfg
).
⚠ نکته امنیتی: تغییرات اشتباه در این پوشه میتونه باعث بالا نیامدن سیستم بشه.
۳.۴. /dev
- مخفف devices → اینجا همه دستگاههای سختافزاری به صورت فایل نمایش داده میشن.
- مثالها:
/dev/sda
→ دیسک اول/dev/tty
→ ترمینالها/dev/null
→ سیاهچاله دادهها
۳.۵. /etc
- محل تمام فایلهای پیکربندی سیستم.
- مثالها:
/etc/passwd
→ فهرست کاربران/etc/ssh/sshd_config
→ پیکربندی SSH- معمولاً متن ساده و قابل ویرایش با ویرایشگرها.
۳.۶. /home
- پوشهٔ شخصی تمام کاربران.
- مثال:
/home/ali
- هر کاربر فقط به پوشهٔ خودش دسترسی کامل داره (مگر اینکه Root باشه).
۳.۷. /lib , /lib64
- کتابخانههای مورد نیاز برنامهها.
- معادل فایلهای
.dll
در ویندوز. - مثال:
/lib/x86_64-linux-gnu/libc.so.6
۳.۸. /media
- محل اتصال (mount) خودکار دیسکها و فلشها.
- مثال:
/media/ali/USB-DATA
۳.۹. /mnt
- مکان موقتی برای mount دستی دستگاهها یا پارتیشنها توسط مدیر سیستم.
۳.۱۰. /opt
- محل نصب نرمافزارهای اختیاری که جزو سیستم اصلی نیستند.
- مثال:
/opt/google/chrome
۳.۱۱. /proc
- یک سیستم فایل مجازی که اطلاعات زنده سیستم و پردازهها رو نشون میده.
- مثال:
/proc/cpuinfo
/proc/meminfo
💡 میتونی فایلها رو با cat
بخونی.
۳.۱۲. /root
- پوشهٔ خانگی مخصوص کاربر Root.
- اشتباه نگیری با
/
(ریشه کل سیستم).
۳.۱۳. /run
- ذخیره دادههای موقتی مربوط به زمان اجرا (runtime).
۳.۱۴. /sbin
- مثل
/bin
ولی مخصوص دستورات مدیریتی سیستم. - مثال:
/sbin/ifconfig
/sbin/reboot
۳.۱۵. /srv
- محل ذخیره دادههایی که سرویسهای سیستم ارائه میدن (مثل وبسایتها یا FTP).
۳.۱۶. /sys
- سیستم فایل مجازی برای تعامل با هسته (Kernel sysfs).
۳.۱۷. /tmp
- محل فایلهای موقتی.
- دادهها بعد از ریبوت معمولاً پاک میشن.
- همه کاربران دسترسی نوشتن دارن ولی محدودیت ایمنی sticky bit فعال هست.
۳.۱۸. /usr
- حاوی بیشتر برنامهها و دادههای کاربر و نرمافزارها.
- زیرپوشههای مهم:
/usr/bin
→ برنامههای کاربری/usr/sbin
→ ابزارهای مدیریتی/usr/lib
→ کتابخانهها/usr/share
→ فایلهای ثابت و مستندات
۳.۱۹. /var
- دادههای متغیر (variable data) → فایلهایی که مدام تغییر میکنن.
- زیرپوشههای مهم:
/var/log
→ لاگ سیستم/var/spool
→ صف چاپ و ایمیل/var/tmp
→ فایل موقتی بلندمدت
۴. ساختار کامل – دید کلی
/
├── bin # برنامههای ضروری کاربر
├── boot # فایلهای بوت
├── dev # دستگاهها
├── etc # تنظیمات سیستم
├── home # پوشه کاربران
├── lib # کتابخانهها
├── media # اتصال خودکار
├── mnt # mount دستی
├── opt # نرمافزار اضافه
├── proc # اطلاعات زنده سیستم
├── root # خانه Root
├── run # داده زمان اجرا
├── sbin # ابزارهای مدیریتی
├── srv # داده سرویسها
├── sys # ارتباط با هسته
├── tmp # موقت
├── usr # نرمافزارها و ابزارها
└── var # داده متغیر
۵. چرا FHS مهمه؟
- پیشبینیپذیری → هر مدیر لینوکسی میدونه
/etc
برای تنظیماته، پس راحت سیستمها رو مدیریت میکنه. - سازگاری → نرمافزارهایی که بر اساس FHS نوشته شدن روی هر توزیع لینوکسی اجرا میشن.
- امنیت و پشتیبانگیری → راحتتر میشه بخشهای مهم رو بکاپ گرفت یا محدود کرد.
۶. مرور عملی
بیا با چند دستور این ساختار رو لمس کنیم:
دیدن محتوای /bin
ls /bin
دیدن پیکربندی SSH
cat /etc/ssh/sshd_config
دیدن پردازنده
cat /proc/cpuinfo
نصب نرمافزار اختیاری در /opt
sudo mkdir /opt/myapp
۷. نکات ایمنی
- بخشهایی مثل
/bin
,/boot
,/lib
و/etc
رو بدون اطمینان تغییر نده. rm -rf /
یا پاک کردن مسیرهای سیستمی میتونه باعث نابودی کامل سیستم بشه.- فقط در
/home/username
و مسیرهای امن تغییرات کاربر انجام بده.
۸. تمرین عملی
- ساخت فایل در
/tmp
و مشاهده پاک شدن بعد از ریبوت:
touch /tmp/testfile
ls /tmp
- پیدا کردن مسیر اجرایی دستور
grep
:
which grep
- نمایش حجم پوشه
/var/log
:
du -sh /var/log
۹. جمعبندی
- لینوکس یک ساختار درختی واحد دارد که از
/
شروع میشود. - FHS تعیین میکند هر پوشه چه کاربردی دارد.
- پوشههای سیستمی باید با احتیاط مدیریت شوند.
- دانستن اینکه هر فایل کجاست باعث میشود سریع پیدا و تغییرش دهی.