- در صورتی که به هیچ وجه نتوان یک تعامل خوب بین ابزار (مثلا سرویس apache) و SELinux برقرار کرد ، آنگاه به جای خاموش کردن کل SELinux ، میتوان حساسیت SELinux را برای آن ابزار از بین برد.
- به عنوان مثال فرض کنید تحت هیچ شرایطی نمیتوانید تعاملی خوب بین سرویس Apache و SELinux برقرار کنید. در این صورت میتوان حساسیت SELinux را برای سرویس Apache از بین برد.
- در واقع میتوان Type Context سرویس Apache را بر روی گزینهی تنظیم کرد که از نظر SELinux مصونیت کامل داشته باشد و هیچ خطا ، Policy و اعمال محدودیتی از سمت SELinux روی آن سرویس اعمال نشود.
- برای این منظور ابتدا سرویس Apache را Start کنید سپس به صورت زیر عمل کنید.
# ps auxZ | grep httpd root:system_r:httpd_t root 4576 0.0 0.3 174816 3216 ? Ss 00:53 0:00 /usr/sbin/httpd root:system_r:httpd_t apache 4577 0.0 0.2 174816 2384 ? S 00:53 0:00 /usr/sbin/httpd root:system_r:httpd_t apache 4578 0.0 0.2 174816 2384 ? S 00:53 0:00 /usr/sbin/httpd root:system_r:httpd_t apache 4579 0.0 0.2 174816 2384 ? S 00:53 0:00 /usr/sbin/httpd root:system_r:httpd_t apache 4580 0.0 0.2 174816 2384 ? S 00:53 0:00 /usr/sbin/httpd root:system_r:httpd_t apache 4581 0.0 0.2 174816 2384 ? S 00:53 0:00 /usr/sbin/httpd root:system_r:httpd_t apache 4582 0.0 0.2 174816 2384 ? S 00:53 0:00 /usr/sbin/httpd root:system_r:httpd_t apache 4584 0.0 0.2 174816 2384 ? S 00:53 0:00 /usr/sbin/httpd root:system_r:httpd_t apache 4585 0.0 0.2 174816 2384 ? S 00:53 0:00 /usr/sbin/httpd
- پروندهی httpd_disable_trans را cat کنید.
# cat /selinux/booleans/httpd_disable_trans 1 1
- به منظور غیر فعال کردن سرویس Apache در SELinux به صورت زیر عمل کنید.
# echo '0 0' > /selinux/booleans/httpd_disable_trans # cat /selinux/booleans/httpd_disable_trans 0 1
- عدد اول به منظور ثبت تغییرات است.
- عدد دوم به منظور اعمال تغییرات است.
- از آنجایی که در حال حاضر فقط تغییرات را اعمال کردهایم ، لذا عدد دوم برابر با یک است.
- به منظور غیر فعال کردن سرویس Apache در SELinux نیاز است تغییرات را ثبت نیز نماییم.
- به منظور ثبت تغییرات به صورت زیر عمل کنید.
# echo '1' > /selinux/commit_pending_bools
- در صورتی که پروندهی httpd_disable_trans را بخوانید ، میبینید که محتوای آن به صورت 1 1 تبدیل شده است.
# cat /selinux/booleans/httpd_disable_trans 1 1
- عدد اول به منظور ثبت تغییرات است.
- عدد دوم به منظور اعمال تغییرات است.
- نکته : تا تغییرات ثبت یا commit نشود ، نتایج در عمل قابل مشاهده نخواهد بود.
- در ادامه نیاز است تا سرویس مورد restart شود تا یک PID جدید اختیار کند.
- حال در صورتی که بار دیگر دستور ps را اجرا کنید ، خواهید دید که Type Context مربوط به سرویس Apache از httpd_t به initrc_t تغییر یافته است.
# ps auxZ | grep httpd root:system_r:initrc_t root 4658 0.0 0.3 174336 3212 ? Ss 01:03 0:00 /usr/sbin/httpd root:system_r:initrc_t apache 4659 0.0 0.2 174468 2384 ? S 01:03 0:00 /usr/sbin/httpd root:system_r:initrc_t apache 4660 0.0 0.2 174468 2384 ? S 01:03 0:00 /usr/sbin/httpd root:system_r:initrc_t apache 4661 0.0 0.2 174468 2384 ? S 01:03 0:00 /usr/sbin/httpd root:system_r:initrc_t apache 4662 0.0 0.2 174468 2384 ? S 01:03 0:00 /usr/sbin/httpd root:system_r:initrc_t apache 4663 0.0 0.2 174468 2384 ? S 01:03 0:00 /usr/sbin/httpd root:system_r:initrc_t apache 4665 0.0 0.2 174468 2384 ? S 01:03 0:00 /usr/sbin/httpd root:system_r:initrc_t apache 4666 0.0 0.2 174468 2384 ? S 01:03 0:00 /usr/sbin/httpd root:system_r:initrc_t apache 4667 0.0 0.2 174468 2384 ? S 01:03 0:00 /usr/sbin/httpd
- نکته : پس به طور کلی به منظور غیر فعال کردن حساسیت SELinux برای یک ابزار یا سرویس ، نیاز است تا عدد یک را به شکل بالا برای پروندهی آن سرویس در نظر گرفت.
- تست شده بر روی CentOS 5.8