درس ۲ از ۱۲

فایل‌سیستم و مسیرهای مهم Linux

در این درس از مرحله «لینوکس برای کارشناس شبکه» روی فایل‌سیستم و مسیرهای مهم Linux تمرکز می‌کنیم؛ توضیح را از پایه شروع می‌کنیم و بعد می‌بینیم این موضوع در Server Linux چطور دیده و بررسی می‌شود؛ هدف این است که در پایان فقط تعریف را ندانی؛ بتوانی وضعیت طبیعی و غیرطبیعی را هم از هم جدا کنی در این درس Linux را از دید یک پشتیبان شبکه بررسی می‌کنیم؛ لازم نیست همه جزئیات سیستم‌عامل را حفظ کنی، اما باید ساختار فایل‌ها، User و Permission، Serviceها، Network و Log را بشناسی؛ هدف این است که قبل از تغییر بدانی کدام Service و فایل درگیر است، از Log شواهد بگیری و تغییر را با حداقل دسترسی و امکان بازگشت انجام بدهی

این درس برای مطالعه کامل نوشته شده است

با حوصله بخوان، مثال‌ها را تحلیل کن و تمرین‌ها را انجام بده؛ هدف حفظ کردن تعریف‌ها نیست

/ ریشه فایل‌سیستم است

در Linux همه مسیرها از / شروع می‌شوند؛ پارتیشن یا Filesystemهای دیگر هم زیر همین درخت Mount می‌شوند، بنابراین پر شدن / می‌تواند روی کل سیستم اثر بگذارد در Linux مدیریت سرویس‌ها، فایل‌ها، Userها و شبکه بر پایه ابزارها و فایل‌های پیکربندی مشخص انجام می‌شود؛ systemd وضعیت Serviceها و وابستگی آن‌ها را مدیریت می‌کند و journal می‌تواند رویدادهای Kernel، Service و فرایندهای مختلف را ثبت کند؛ Permissionهای فایل از Owner، Group و Other و بیت‌های دسترسی تشکیل می‌شوند و استفاده از sudo باید کنترل‌شده باشد؛ پیش از تغییر باید مسیر فایل پیکربندی، Service مرتبط و Log همان Service شناخته شود نکته‌ای که هنگام پشتیبانی نباید از آن عبور کنی این است که در Linux بهتر است هر تغییر را با شناخت Service و فایل پیکربندی مربوط انجام دهی؛ وضعیت Process، Socket، Permission و Log معمولاً سرنخ‌های اصلی هستند؛ systemd و journal ابزارهای مرکزی در بسیاری از توزیع‌های مدرن‌اند و NetworkManager نیز در RHEL برای مدیریت شبکه استفاده می‌شود؛ قبل از ویرایش، نسخه فایل و راه بازگشت نگه داشته شود در کار روزمره بهتر است این موضوع را این‌طور بررسی کنی: Permission و مالکیت در Linux باید با نیاز واقعی Service هماهنگ باشد؛ اجرای همه چیز با root مشکل را پنهان می‌کند و سطح ریسک را بالا می‌برد؛ User و Group مناسب، حداقل Permission لازم و sudo کنترل‌شده روش قابل نگهداری‌تری است؛ بعد از تغییر، هم دسترسی مورد نیاز و هم عدم دسترسی ناخواسته بررسی شود

/etc تنظیمات را نگه می‌دارد

در بسیاری از Linuxها فایل‌های Configuration سرویس‌ها و سیستم در /etc قرار دارند؛ قبل از ویرایش فایل مهم نسخه پشتیبان بگیر و بعد از تغییر Syntax یا Configuration Test سرویس را اجرا کن در Linux مدیریت سرویس‌ها، فایل‌ها، Userها و شبکه بر پایه ابزارها و فایل‌های پیکربندی مشخص انجام می‌شود؛ systemd وضعیت Serviceها و وابستگی آن‌ها را مدیریت می‌کند و journal می‌تواند رویدادهای Kernel، Service و فرایندهای مختلف را ثبت کند؛ Permissionهای فایل از Owner، Group و Other و بیت‌های دسترسی تشکیل می‌شوند و استفاده از sudo باید کنترل‌شده باشد؛ پیش از تغییر باید مسیر فایل پیکربندی، Service مرتبط و Log همان Service شناخته شود در کار روزمره بهتر است این موضوع را این‌طور بررسی کنی: Permission و مالکیت در Linux باید با نیاز واقعی Service هماهنگ باشد؛ اجرای همه چیز با root مشکل را پنهان می‌کند و سطح ریسک را بالا می‌برد؛ User و Group مناسب، حداقل Permission لازم و sudo کنترل‌شده روش قابل نگهداری‌تری است؛ بعد از تغییر، هم دسترسی مورد نیاز و هم عدم دسترسی ناخواسته بررسی شود

/var داده متغیر و Log را نگه می‌دارد

گزارش رویداد ثبت زمانی اتفاق‌ها و خطاهای سیستم است و برای ساختن Timeline کمک می‌کند؛ زمان گزارش کاربر را با Log همان بازه مقایسه کن هر خطای ثبت‌شده علت اصلی نیست و باید با نشانه مرتبط شود در Linux مدیریت سرویس‌ها، فایل‌ها، Userها و شبکه بر پایه ابزارها و فایل‌های پیکربندی مشخص انجام می‌شود؛ systemd وضعیت Serviceها و وابستگی آن‌ها را مدیریت می‌کند و journal می‌تواند رویدادهای Kernel، Service و فرایندهای مختلف را ثبت کند؛ Permissionهای فایل از Owner، Group و Other و بیت‌های دسترسی تشکیل می‌شوند و استفاده از sudo باید کنترل‌شده باشد؛ پیش از تغییر باید مسیر فایل پیکربندی، Service مرتبط و Log همان Service شناخته شود پایش مؤثر فقط جمع کردن عدد و Log نیست؛ باید وضعیت عادی سرویس شناخته شود، Metricهای معنادار انتخاب شوند و Alert زمانی ایجاد شود که نیاز به اقدام دارد؛ Syslog چارچوبی برای انتقال پیام‌های رویداد ارائه می‌دهد و SNMP برای مشاهده و مدیریت بسیاری از تجهیزات شبکه استفاده می‌شود؛ همگام بودن زمان سیستم‌ها برای ارتباط دادن رویدادهای چند دستگاه ضروری است و Log باید در کنار وضعیت سرویس و تغییرات همان بازه تحلیل شود

/home محل Home کاربران است

/home معمولاً پوشه شخصی کاربران عادی را نگه می‌دارد؛ روی Server ممکن است داده اصلی سرویس جای دیگری باشد؛ قبل از پاک‌سازی فقط بر اساس نام مسیر تصمیم نگیر در Linux مدیریت سرویس‌ها، فایل‌ها، Userها و شبکه بر پایه ابزارها و فایل‌های پیکربندی مشخص انجام می‌شود؛ systemd وضعیت Serviceها و وابستگی آن‌ها را مدیریت می‌کند و journal می‌تواند رویدادهای Kernel، Service و فرایندهای مختلف را ثبت کند؛ Permissionهای فایل از Owner، Group و Other و بیت‌های دسترسی تشکیل می‌شوند و استفاده از sudo باید کنترل‌شده باشد؛ پیش از تغییر باید مسیر فایل پیکربندی، Service مرتبط و Log همان Service شناخته شود اگر بخواهی این بخش را از حالت تعریف به مهارت عملی تبدیل کنی، در Linux بهتر است هر تغییر را با شناخت Service و فایل پیکربندی مربوط انجام دهی؛ وضعیت Process، Socket، Permission و Log معمولاً سرنخ‌های اصلی هستند؛ systemd و journal ابزارهای مرکزی در بسیاری از توزیع‌های مدرن‌اند و NetworkManager نیز در RHEL برای مدیریت شبکه استفاده می‌شود؛ قبل از ویرایش، نسخه فایل و راه بازگشت نگه داشته شود

Linux به بزرگی و کوچکی حروف حساس است

Linux خانواده‌ای از سیستم‌عامل‌ها بر پایه Kernel Linux است و Distributionها ابزار و Packageهای متفاوت دارند؛ در پشتیبانی اول Distribution و نسخه را مشخص کن دستور درست روی یک توزیع ممکن است روی دیگری متفاوت باشد در Linux مدیریت سرویس‌ها، فایل‌ها، Userها و شبکه بر پایه ابزارها و فایل‌های پیکربندی مشخص انجام می‌شود؛ systemd وضعیت Serviceها و وابستگی آن‌ها را مدیریت می‌کند و journal می‌تواند رویدادهای Kernel، Service و فرایندهای مختلف را ثبت کند؛ Permissionهای فایل از Owner، Group و Other و بیت‌های دسترسی تشکیل می‌شوند و استفاده از sudo باید کنترل‌شده باشد؛ پیش از تغییر باید مسیر فایل پیکربندی، Service مرتبط و Log همان Service شناخته شود در کار روزمره بهتر است این موضوع را این‌طور بررسی کنی: در Linux بهتر است هر تغییر را با شناخت Service و فایل پیکربندی مربوط انجام دهی؛ وضعیت Process، Socket، Permission و Log معمولاً سرنخ‌های اصلی هستند؛ systemd و journal ابزارهای مرکزی در بسیاری از توزیع‌های مدرن‌اند و NetworkManager نیز در RHEL برای مدیریت شبکه استفاده می‌شود؛ قبل از ویرایش، نسخه فایل و راه بازگشت نگه داشته شود

مثال محیط واقعی

فرض کن در Server Linux مشکلی گزارش شده و احتمال می‌دهی به فایل‌سیستم و مسیرهای مهم Linux مربوط باشد. قبل از تغییر، وضعیت فعلی را با systemctl، journalctl، ip، ss، df، free و ps بررسی می‌کنی و نتیجه را با یک حالت سالم یا مستند معتبر مقایسه می‌کنی. اگر شواهد فرضیه را تأیید کردند، فقط همان بخش مرتبط را تغییر می‌دهی و بعد همان تست را دوباره اجرا می‌کنی تا مطمئن شوی مشکل واقعاً برطرف شده است

اشتباهات رایج

این اشتباه‌ها را تکرار نکن

  • /home معمولاً پوشه شخصی کاربران عادی را نگه می‌دارد. روی Server ممکن است داده اصلی سرویس جای دیگری باشد؛ قبل از پاک‌سازی فقط بر اساس نام مسیر تصمیم نگیر
  • تغییر دادن تنظیمات مرتبط با فایل‌سیستم و مسیرهای مهم Linux قبل از اینکه مطمئن شوی مشکل واقعاً به همین بخش مربوط است
  • نتیجه‌گیری درباره فایل‌سیستم و مسیرهای مهم Linux فقط از روی یک نشانه و بدون انجام تست نهایی
تمرین عملی

حالا خودت انجام بده

  1. در یک نمونه آزمایشی مرتبط با فایل‌سیستم و مسیرهای مهم Linux، فقط وضعیت فعلی را مشاهده کن و سه نکته‌ای را که برای تشخیص حالت سالم مهم‌اند یادداشت کن
  2. با systemctl، journalctl، ip، ss، df، free و ps وضعیت مرتبط با فایل‌سیستم و مسیرهای مهم Linux را بدون تغییر بررسی کن، سه داده واقعی جمع کن و توضیح بده هرکدام چه چیزی به تو می‌گویند
  3. یک خطای فرضی مرتبط با فایل‌سیستم و مسیرهای مهم Linux بنویس و مشخص کن اولین تست کم‌خطر تو چیست و چه نتیجه‌ای فرضیه‌ات را رد می‌کند

نکته‌هایی که باید با خودت ببری

  • / ریشه فایل‌سیستم است
  • /etc تنظیمات را نگه می‌دارد
  • /var داده متغیر و Log را نگه می‌دارد
  • /home محل Home کاربران است
  • Linux به بزرگی و کوچکی حروف حساس است
  • با root دائمی کار نکن و قبل از ویرایش فایل تنظیمات نسخه برگشت داشته باش
خودسنجی

قبل از رفتن به درس بعد، جواب را برای خودت توضیح بده

این نکته را با یک مثال توضیح بده: / ریشه فایل‌سیستم است. بعد بگو در عمل چطور آن را بررسی می‌کنی.

در Linux همه مسیرها از / شروع می‌شوند. پارتیشن یا Filesystemهای دیگر هم زیر همین درخت Mount می‌شوند، بنابراین پر شدن / می‌تواند روی کل سیستم اثر بگذارد

این نکته را با یک مثال توضیح بده: /etc تنظیمات را نگه می‌دارد. بعد بگو در عمل چطور آن را بررسی می‌کنی.

در بسیاری از Linuxها فایل‌های Configuration سرویس‌ها و سیستم در /etc قرار دارند. قبل از ویرایش فایل مهم نسخه پشتیبان بگیر و بعد از تغییر Syntax یا Configuration Test سرویس را اجرا کن

این نکته را با یک مثال توضیح بده: /var داده متغیر و Log را نگه می‌دارد. بعد بگو در عمل چطور آن را بررسی می‌کنی.

گزارش رویداد ثبت زمانی اتفاق‌ها و خطاهای سیستم است و برای ساختن Timeline کمک می‌کند؛ زمان گزارش کاربر را با Log همان بازه مقایسه کن

مطالعه درس همیشه عمومی است

برای ذخیره پیشرفت، دوره را رسمی شروع کن

با ثبت‌نام، تکمیل درس‌ها و نمره آزمون روی حساب ذخیره می‌شود

ثبت‌نام و شروع رسمی