How to disable SELinux for specific program or service

  • در صورتی که به هیچ وجه نتوان یک تعامل خوب بین ابزار (مثلا سرویس apache) و SELinux برقرار کرد ، آنگاه به جای خاموش کردن کل SELinux ، می‌توان حساسیت SELinux را برای آن ابزار از بین برد.
  • به عنوان مثال فرض کنید تحت هیچ شرایطی نمی‌توانید تعاملی خوب بین سرویس Apache و SELinux برقرار کنید. در این صورت می‌توان حساسیت SELinux را برای سرویس Apache از بین برد.
  • در واقع می‌توان Type Context سرویس Apache را بر روی گزینه‌ی تنظیم کرد که از نظر SELinux مصونیت کامل داشته باشد و هیچ خطا ،‌ Policy و اعمال محدودیتی از سمت SELinux روی آن سرویس اعمال نشود.
  • برای این منظور ابتدا سرویس Apache را Start کنید سپس به صورت زیر عمل کنید.

  • پرونده‌ی httpd_disable_trans را cat کنید.

  • به منظور غیر فعال کردن سرویس Apache در SELinux به صورت زیر عمل کنید.

  • عدد اول به منظور ثبت تغییرات است.
  • عدد دوم به منظور اعمال تغییرات است.
  • از آنجایی که در حال حاضر فقط تغییرات را اعمال کرده‌ایم ، لذا عدد دوم برابر با یک است.
  • به منظور غیر فعال کردن سرویس Apache در SELinux نیاز است تغییرات را ثبت نیز نماییم.
  • به منظور ثبت تغییرات به صورت زیر عمل کنید.

  • در صورتی که پرونده‌ی httpd_disable_trans را بخوانید ، می‌بینید که محتوای آن به صورت 1 1 تبدیل شده است.

  • عدد اول به منظور ثبت تغییرات است.
  • عدد دوم به منظور اعمال تغییرات است.
  • نکته : تا تغییرات ثبت یا commit نشود ، نتایج در عمل قابل مشاهده نخواهد بود.
  • در ادامه نیاز است تا سرویس مورد restart شود تا یک PID جدید اختیار کند.
  • حال در صورتی که بار دیگر دستور ps را اجرا کنید ، خواهید دید که Type Context مربوط به سرویس Apache از httpd_t به initrc_t تغییر یافته است.

  • نکته : پس به طور کلی به منظور غیر فعال کردن حساسیت SELinux برای یک ابزار یا سرویس ،‌ نیاز است تا عدد یک را به شکل بالا برای پرونده‌ی آن سرویس در نظر گرفت.
  • تست شده بر روی CentOS 5.8