ستتعرف في هذا البرنامج التعليمي على ماهية SELinux وكيفية إصلاح الخطأ “فشل في تحميل سياسة Selinux” والذي يظهر على أنظمة التشغيل CentOS.
أولاً، دعونا نصف باختصار وضع أمان SELinux. ما هو SELinux وما هو الدور الذي يلعبه في نظام التشغيل Linux؟
SELinux عبارة عن وحدة أمان kernel تتحكم في وصول البرامج والمستخدم إلى نظام التشغيل. تم إصدار SELinux في وقت ما في منتصف العقد الأول من القرن الحادي والعشرين، وأصبح موجودًا في المزيد والمزيد من توزيعات Linux على مر السنين.
يتمثل نشاط هذه الوحدة في توزيع السياسات الأمنية في النظام والتحكم فيها، مما يحد من الوصول إلى التطبيقات على مستوى الأنظمة الفرعية الرئيسية للنواة.
تعمل آلية الأمان هذه بشكل مستقل عن أنظمة التحكم والحظر التقليدية للأنشطة المشبوهة الموجودة على Linux. لا يمكن السيطرة عليها بشكل فعال من قبل المستخدم المتميز “root” وبدون التفاعل مع التطبيقات أو نصوص الطرف الثالث، يوفر SELinux الاستقرار للنواة.
سيعتمد أمان نظام Linux بدون وحدة SELinux تلقائيًا على صحة تكوين النواة والتطبيقات ذات امتيازات التشغيل وتكويناتها. قد يؤدي خطأ بسيط في أحد هذه العناصر المذكورة سابقًا إلى الإضرار بالأداء الصحيح للنظام بأكمله.
في الختام، يمكن تسمية SELinux بالحارس الحقيقي لأنظمة تشغيل Linux، حيث يضمن السلامة والأمن والاستقرار. لا تخلط بين هذه الوحدة وبرنامج مكافحة الفيروسات أو جدار الحماية. الأمر مختلف تمامًا.
يدرك المستخدمون الذين يستخدمون Linux للويب والخوادم السحابية جيدًا أن SELinux يمكن أن يسبب مشكلات عند تشغيل تطبيقات البرامج المميزة على مستوى الوصول إلى النظام والتحكم فيه.
يمكن لـ SELinux التحكم في أنشطة نظام التشغيل لكل مستخدم فردي وتطبيق وبرنامج خفي، وفرض سياسات وقيود أمنية دقيقة. يمكن أن يمثل هذا في كثير من الأحيان مشكلة لخوادم الويب، حيث تتمتع معظم العمليات البرمجية المحددة بامتيازات وتتفاعل مع نواة نظام التشغيل.
أولئك الذين قرروا تعطيل وحدة النواة هذه غالبًا ما يرتكبون أخطاء في تعديل التوجيهات، مما يؤدي إلى عدم القدرة على تحميل SELinux عند إعادة تشغيل نظام التشغيل. “Failed to load SELinux policy“.

لقد أظهرت في أ مقالة حول كيفية تعطيل SELinux، لمنع مقاطعة العملية التي تضعها خدمة NGINX في خادم الويب.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=disabled (WRONG)
خطأ ارتكبناه عن غير قصد، وبما أنه خادم بعيد، كان الحل إعادة التثبيت الكامل لنظام التشغيل.
إذا كنت محظوظًا بعض الشيء، فلا يمكنك إصلاح SELinux إلا إذا كان لديك قرص DVD في متناول يدك أو القدرة على تشغيل صورة ISO لنظام التشغيل “rescue“.
Failed to load SELinux Policy تم العثور عليه خاصة في الإصدارات CentOS 6, CentOS 7, RHEL 7.x.
شكرًا على هذه المقالة، لقد حصلت على السبب الجذري ولكن فاتك حل واحد: في الواقع فإن إضافة selinux=0 في إدخال نظام التشغيل الذي اقترحه grub يكفي لتعطيل selinux وجعل نظام التشغيل قابلاً للتمهيد مرة أخرى.
شكرا لهذا الحل!
selinux=0أعتقد أنه في وقت كتابة المقال، لم يكن هذا الخيار متاحًا. قد أكون مخطئا. شكرا على الحل!