نظرة عامة
تُعد أداة bwrap (المعروفة بـ Bubblewrap) إحدى أقوى الوسائل مفتوحة المصدر في بيئات لينكس لإنشاء بيئات تشغيل معزولة (Sandboxing) دون الحاجة لامتيازات المسؤول الجذر (root). تتيح هذه التقنية التحكم الدقيق في مساحات أسماء النواة (Kernel Namespaces) لعزل مسارات التخزين، والمكدس الشبكي، والعمليات التنفيذية بسلاسة وأمان. يستعرض هذا الدليل العملي خطوات تطبيق العزل التام على توزيعة Ubuntu 24.04 وفهم الهندسة المعمارية التحتية للحاويات الخفيفة خطوة بخطوة.
1. تثبيت حزمة Bubblewrap وإطلاق أول بيئة معزولة
نبدأ بتجهيز النظام وتنزيل أداة bubblewrap من المستودعات الرسمية لإرساء قواعد بيئة الحماية الافتراضية.

تعتمد bwrap على صلاحيات المستخدم المحدودة لتشييد مساحات أسماء منعزلة بالكامل تنفذ البرمجيات داخل قفص أمني مشدد.
من خلال إعادة ربط مسارات النظام الحيوية للقراءة فقط، يمكننا إنشاء صدفة تفاعلية (Shell) مجردة ومنفصلة كلياً عن بيئة المضيف الأصلية.
⚙️ [محددات التشغيل الأساسية]
--ro-bind : ربط الدلائل أو الملفات من النظام الأصلي داخل بيئة العزل بصيغة القراءة فقط (Read-Only) لمنع التعديل.--bind : مشاركة المسارات المحددة بصلاحيات كاملة تشمل القراءة والكتابة.--dev : تشييد هيكل الأجهزة الافتراضية الضروري لتشغيل التطبيقات داخل /dev.--proc : إنشاء مساحة أسماء جديدة للعمليات وربط نظام ملفات المعلومات الافتراضي /proc.--tmpfs : حجز مساحة تخزين مؤقتة تعتمد على الذاكرة العشوائية تفنى بانتهاء عمل الصندوق.--unshare-all : قطع الاتصال الجذري بين بيئة العزل والمضيف عبر فك ترابط كافة مساحات الأسماء (IPC, PID, Network, User, UTS, Cgroup).--symlink : توليد روابط رمزية داخل بيئة العزل لتوجيه المسارات بدقة.

2. تقييد التعديل وحماية الملفات عبر الربط للقراءة فقط
لتقييم مدى فعالية جدران الحماية الافتراضية ضد العبث بالبيانات، ننشئ مجلداً تجريبياً في المسار /tmp/bwrap-test ونضع بداخله ملف نصي لاختبار الاستقرار.

باستخدام معامل --ro-bind، نربط المسار المضيف /tmp/bwrap-test بالنقطة الافتراضية /test بداخل الصندوق بوضعية القراءة الحصرية، ثم نستعرض محتوى الملف.
تُظهر المخرجات عبارة Original Content بصورة سليمة، مما يؤكد نجاح وصول التطبيق المعزول إلى البيانات الخارجية وقراءتها دون أي عوائق.

نختبر الآن متانة الحماية عبر محاولة الكتابة القسرية أو تعديل محتوى الملف /test/data.txt من داخل نفس الجلسة المقيدة.
يرفض النظام العملية مباشرةً ويمنع التجاوزات نظراً لانعدام صلاحيات الكتابة المفروضة بفضل --ro-bind، وتؤكد الرسالة Write protected successfully ثبات نظام الملفات للمضيف وسلامته من أي تغيير غير مصرح به.

3. فصل معرفات العمليات وتجريد الاتصال الشبكي
ننتقل إلى فصل طبقات التحكم عبر دمج خياري --unshare-pid و--proc /proc، بهدف بناء مساحة معرفات عمليات مستقلة جذرياً عن النظام المضيف ومراقبة العمليات النشطة.
تحجب هذه الخطوة كافة العمليات الجارية في المضيف عن الأنظار، حيث تبدأ العمليات داخل بيئة العزل من المعرف PID 1 بالترتيب، مما يحصر الرؤية فقط في bwrap وsh وps.

عند إضافة المعامل --unshare-net، ينعزل المكدس الشبكي الداخلي انفصالاً تاماً عن بطاقات الشبكة الفيزيائية والافتراضية للمضيف.
لا يظهر استعلام واجهات الشبكة أية نتائج تذكر حتى بالنسبة لبطاقة الاسترجاع الداخلي (lo)، مما يضمن استحالة إجراء أي تواصل خارجي أو تسريب للبيانات عبر بروتوكولات الإنترنت.

4. إعداد بيئات عمل متطايرة باستخدام نظام الملفات المؤقت tmpfs
نخصص مساحة عمل قابلة للكتابة دون التأثير على القرص الصلب باستخدام خيار --tmpfs /tmp، حيث نختبر توليد ملف سجلات في المسار الافتراضي /tmp/sandbox.log.
تتم عمليات الإنشاء والكتابة والتحقق من الملف بانسيابية تامة، حيث تعمل الذاكرة العشوائية كحاضنة للملفات المؤقتة داخل الحاوية.

بمجرد الخروج وإنهاء جلسة الصندوق المعزول، نفحص المسار /tmp/sandbox.log على نظام التشغيل المضيف.
تتبخر كافة التعديلات والملفات التي أُنشئت في بيئة --tmpfs بمجرد إغلاق العملية دون ترك أي أثر في التخزين الدائم، وتؤكد عبارة Host filesystem remained completely untouched بقاء مساحة المضيف نقية وآمنة تماماً.

يوفر Bubblewrap أرضية صلبة لتصميم بيئات معزولة مخصصة بدقة فائقة وتكلفة موارد شبه معدومة مقارنة بالحاويات التقليدية.
بإمكانك توظيف هذه المحددات للتحكم الصارم بصلاحيات الملفات والشبكة لتشغيل البرمجيات المشبوهة أو بناء بيئات تطوير معزولة ومحمية بالكامل.