نظرة عامة وتوطئة
يمثل الأمر chcon أداة جوهرية لمديري أنظمة لينكس لإجراء تعديلات لحظية وسريعة على سياقات أمان SELinux (Security Context). يستعرض هذا المقال أربعة سيناريوهات تشغيلية شائعة للتعامل مع هذا الأمر بكفاءة، مع التركيز على القيود التقنية والمحاذير البارزة التي يجب الانتباه إليها عند إعادة تشغيل الخادم أو تنفيذ عمليات الاستعادة الدورية.
فحص سياق SELinux والتعرف على بنية chcon
لعزل بيئة الاختبار وضمان عدم التأثير على مسارات النظام، نقوم بإنشاء مجلد عمل مخصص والانتقال إليه مباشرة عبر تنفيذ الأمر mkdir -p /tmp/chcon_lab && cd /tmp/chcon_lab.

نقوم بإنشاء ملف ويب تجريبي لتطبيق خطوات فحص وتعديل السياق الأمني عليه باستخدام الأمر touch web_sample.html.

للتحقق من مصفوفة سياق الأمان المسندة إلى الملف حالياً، نستخدم خيار الأمان في أمر الاستعراض ls -Z web_sample.html.
عند ملاحظة ظهور رمز الاستفهام ? ضمن المخرجات، فهذا يعني أن نظام حماية SELinux متوقف عن العمل (Disabled) على التوزيعة، أو أن الملف يفتقر كلياً لبيانات التوسيم الأمني.
تتبع بنية استخدام chcon الصيغة المعيارية التالية: chcon [خيارات] السياق مسار_الملف.
⚙️ [الخيارات التشغيلية الرئيسية]
-t : يحدد ويغير نوع الأمان (Type) المرتبط بالملف أو المجلد المستهدف.-u : يخصص معرف المستخدم (User) ضمن تركيبة سياق الأمان.-r : يعيد ضبط الدور الوظيفي (Role) للكيان المستهدف.-R : ينفذ التغييرات بنمط تكراري تعاقبي (Recursive) ليشمل المجلدات الفرعية ومحتوياتها.--reference : يستنسخ التوصيف الأمني كاملاً من ملف مرجعي سليم ويطبقه على الهدف.-v : يُفعل النمط التفصيلي (Verbose) لطباعة مجريات العملية بدقة على الشاشة.

تطبيق نمط تعديل نوع الأمان المحدد (-t)
لبدء محاكاة عملية ضبط سياقات خوادم الويب، ننشئ دليلاً تجريبياً وصفحة موقع أولية عبر الأمر mkdir -p /tmp/chcon_lab && touch /tmp/chcon_lab/index.html.

لتمكين خدمات الويب من قراءة المستند وتقديمه دون قيود أمنية، نمنحه النوع المناسب httpd_sys_content_t عن طريق الأمر chcon -t httpd_sys_content_t /tmp/chcon_lab/index.html.

نتحقق من تطبيق القيمة الجديدة على الملف بتنفيذ الأمر ls -Z /tmp/chcon_lab/index.html.
تكرار ظهور علامة ? يدل مجدداً على عدم تفعيل طبقة حماية SELinux داخل البيئة، مما يمنع النظام من تسجيل سمات الأمان المحدثة فعلياً.

الاستنساخ المرجعي (–reference) والتطبيق التكراري (-R)
للتدرب على معالجة الهياكل الشجرية، ننشئ مساراً لمحتوى الموقع متضمناً ملف تنسيقات عبر تنفيذ mkdir -p /tmp/chcon_lab/public_html && touch /tmp/chcon_lab/public_html/style.css.

نقوم بتوليد صفحة إضافية لتكون وجهة استنساخ الخصائص بتشغيل touch /tmp/chcon_lab/target_page.html.

عوضاً عن إدخال سلاسل السياق الطويلة يدوياً، ننسخ إعدادات الملف الأصلي index.html وننقلها إلى target_page.html عبر الأمر chcon --reference=/tmp/chcon_lab/index.html /tmp/chcon_lab/target_page.html.
تضمن ميزة --reference مطابقة الإعدادات الأمنية من العناصر العاملة بدقة متناهية وتفادي أخطاء الكتابة.

لتعديل مجلد كامل بجميع عناصره دفعة واحدة، ننفذ الأمر chcon -R -t httpd_sys_content_t /tmp/chcon_lab/public_html، مما يعمم النوع httpd_sys_content_t شاملاً كل ما يحتويه المسار.
يعمل الخيار -R على تتبع فروع المجلد وتطبيق القواعد الأمنية بصورة شمولية ودورية.

نلقي نظرة فاحصة على تفاصيل محتويات الدليل باستخدام ls -laZ /tmp/chcon_lab/public_html.
استمرار ظهور ? يعود إلى تعطيل محرك SELinux في النظام، الأمر الذي يحول دون تخزين بيانات السياقات في السمات الموسعة للملفات.

قيود الأمر chcon ومحاذير الاستخدام الحيوية
للاستفادة من أدوات إدارة وسياسات الحماية وخاصة أداة الاسترجاع restorecon، نقوم بتثبيت الحزم الإدارية عبر apt-get update -qq && apt-get install -y policycoreutils.

نجهز ملفاً تجريبياً لاختبار سلوك الاستعادة وإعادة الضبط بتشغيل touch /tmp/chcon_lab/warning_test.txt.

نغير سياق الملف مؤقتاً إلى نوع الملفات المؤقتة عبر الأمر chcon -t tmp_t /tmp/chcon_lab/warning_test.txt.
من الضروري إدراك أن أي تعديل تجريه أداة chcon يُعامل كإجراء عابر وغير مسجل في قاعدة السياسات الدائمة لنظام التشغيل.

نعاين الوضع الحالي للملف عبر تنفيذ ls -Z /tmp/chcon_lab/warning_test.txt.
تشير علامة ? في النتيجة إلى غياب فاعلية بيئة SELinux في هذه الجلسة.

لمزامنة الملف مع القواعد الأصلية المسجلة في سياسة النظام، نطلب الاسترجاع عبر الأمر restorecon -v /tmp/chcon_lab/warning_test.txt.
يجب التنبيه إلى أن كافة التغييرات المنفذة عبر chcon تسقط تلقائياً وتعود إلى القيم التلقائية بمجرد تشغيل restorecon أو عند إعادة توسيم نظام الملفات بالكامل (autorelabel)؛ لذا يُشترط الاعتماد على semanage fcontext إذا كان الهدف تثبيت السياق بصفة دائمة.

نتحقق مجدداً من حالة الملف بعد محاولة الاستعادة بواسطة ls -Z /tmp/chcon_lab/warning_test.txt.
توضح علامة ? استمرار تشغيل النظام ضمن وضع التعطيل (Disabled) لطبقة الأمان المتقدمة.

تناولنا خلال هذا الدليل آلية الاستفادة من أمر chcon في بيئات لينكس لتعديل سياقات أمان SELinux بكفاءة، مع إبراز حدوده التشغيلية.
نظراً لطبيعة هذا الأمر التي تقتصر على الحلول المؤقتة، يُنصح دائماً باستيعاب الفروق الجوهرية بينه وبين السياسات الثابتة لاختيار الأداة المناسبة لكل سيناريو عملي.