نظرة عامة
تُعد أداة chroot إحدى الآليات الجوهرية في أنظمة لينكس لإعادة تعيين الدليل الجذري الظاهري للعمليات الجارية، مما يُنشئ حاجزاً وقائياً يمنع تجاوز المسار المحدد. يستعرض هذا الدليل التطبيقي كيفية توظيف هذه التقنية لبناء مساحات اختبار مصغرة (Sandboxes)، واستخدامها كأداة حاسمة في عمليات الإنقاذ الطارئ للأنظمة المعطوبة عبر وسائط الإقلاع الحي، بالإضافة إلى تأمين اتصالات SFTP وحصر وصول المستخدمين داخل نطاق جغرافي محدد لملفاتهم.
المبادئ الأساسية لـ chroot وبناء سجن خفيف باستخدام BusyBox
لتجهيز أدنى بيئة تشغيلية مكتفية ذاتياً دون الحاجة إلى التعامل مع تشابك المكتبات المشتركة، نعتمد على حزمة BusyBox المبنية بربط ساكن (Statically Linked) عبر تنفيذ:
sudo apt-get update -qq && sudo apt-get install -y busybox-static

تتطلب البيئة المعزولة هيكلية مجلدات خاصة بها؛ لذا نقوم بإنشاء المسار المخصص لاحتواء الملفات التنفيذية داخل السجن التجريبي:
sudo mkdir -p /opt/mini-jail/bin

نقوم بعد ذلك بنسخ الملف التنفيذي الموحد إلى مسار السجن لتوفير صدفة الأوامر وأدوات إدارة الملفات الأساسية:
sudo cp /bin/busybox /opt/mini-jail/bin/

تقوم فكرة chroot على إيهام العملية بأن المسار الممرر إليها هو الجذر المطلق (/)، ما يقطع أي صلة بالهيكل الدليلي للنظام المضيف.
عند إطلاق الصدفة داخل /opt/mini-jail، يعرض استعراض الملفات محتويات هذا المجلد فقط باعتباره قمة الشجرة، مما يثبت نجاح العزل التام:
⚙️ [خيارات تشغيلية متقدمة]
--userspec=USER:GROUP : تحديد هوية المستخدم والمجموعة التي ستُسند إليها العمليات داخل البيئة المقيدة.--groups=G_LIST : إسناد صلاحيات المجموعات الإضافية مفصولة بفواصل للعملية المنفذة.--skip-chdir : منع التغيير التلقائي لدليل العمل الحالي إلى الجذر الجديد عند الدخول.

بناء بيئة معزولة متكاملة لصدفة Bash مع استيفاء تبعيات ldd
عند الرغبة في تشغيل صدفة Bash القياسية مع أدوات النظام الاعتيادية، يتوجب توفير المكتبات المشتركة التي تعتمد عليها. نبدأ أولاً بإنشاء الشجرة الدليلية المطابقة لاحتياجات النظام:
sudo mkdir -p /opt/bash-jail/{bin,lib,lib64}

ننقل البرمجيات المطلوبة مثل صدفة bash وأمر استعراض المجلدات ls إلى دليل البرامج الخاص بالبيئة:
sudo cp /bin/bash /bin/ls /opt/bash-jail/bin/

نظراً لبناء هذه البرامج عبر الربط الديناميكي، ننسخ حزم المكتبات الأساسية لضمان عمل التعليمات البرمجية دون أخطاء:
sudo cp -a /lib/x86_64-linux-gnu /opt/bash-jail/lib/

نستكمل المتطلبات بنسخ المترجم الديناميكي (Dynamic Linker/Loader) والمكتبات المحورية ذات الصلة بمعمارية 64 بت:
sudo cp -a /lib64/* /opt/bash-jail/lib64/

نختبر الآن الدخول إلى البيئة المعزولة وتشغيل صدفة Bash مع فحص الدليل الجذري:
sudo chroot /opt/bash-jail /bin/bash -c "ls -la /"
توضح النتائج أن الصدفة تعمل في مساحة مستقلة تماماً؛ حيث تقتصر الرؤية على مجلدات bin وlib وlib64 الخاصة بالسجن، مؤكدةً تلبية جميع التبعيات بنجاح.

ربط أنظمة الملفات الافتراضية وصيانة الأنظمة المعطوبة
تعتمد عمليات استعادة الأنظمة العاجزة عن الإقلاع أو إصلاح مدير الإقلاع GRUB على وصل أقسام التخزين ثم الدخول إليها عبر chroot. ننشئ أولاً نقطة التثبيت المخصصة:
sudo mkdir -p /mnt/sysroot

نقوم بربط نظام الملفات المستهدف على نقطة التثبيت المجهزة (في هذا المثال يتم ربط الجذر لغرض المحاكاة):
sudo mount --bind / /mnt/sysroot

لتوفير وصول مباشر للعتاد والأقسام التخزينية أثناء إجراءات الإصلاح، نربط شجرة أجهزة النواة من المضيف:
sudo mount --bind /dev /mnt/sysroot/dev

تحتاج أدوات إدارة العمليات ومعلومات النواة للوصول إلى نظام الملفات المؤقت proc، فنقوم بربطه كالتالي:
sudo mount --bind /proc /mnt/sysroot/proc

ننقل واجهة تفاعل النواة ومعلومات تعريفات العتاد عبر ربط نظام sysfs:
sudo mount --bind /sys /mnt/sysroot/sys

ندخل الآن إلى البيئة بعد اكتمال ربط الأنظمة الحيوية ونفحص استجابة النواة والمساحة التخزينية:
sudo chroot /mnt/sysroot /bin/bash -c "uname -a && df -h /"
يؤكد المخرج قدرة أدوات الصيانة على قراءة مواصفات النواة ومساحات الأقسام بدقة، مما يتيح مباشرة تثبيت الحزم أو تعديل تكوينات الإقلاع بأمان.

بعد إنهاء المهام، ينبغي فصل المسارات بترتيب عكسي لتفادي بقاء العمليات عالقة أو تضرر البيانات:
sudo umount /mnt/sysroot/sys /mnt/sysroot/proc /mnt/sysroot/dev /mnt/sysroot

ضبط صلاحيات وأمان خادم SFTP عبر حصر المستخدمين بـ chroot
يساعد تقييد مستخدمي نقل الملفات داخل أدلتهم الشخصية في حماية ملفات الخادم الحساسة. نبدأ بإنشاء حساب مخصص لنقل الملفات مع تعطيل إمكانية فتح صدفة تفاعلية:
sudo id -u jailuser &>/dev/null || sudo useradd -m -d /home/jailuser -s /bin/false jailuser

نخصص مجلداً فرعياً يستطيع العميل إيداع الملفات داخله، إذ تحظر معايير OpenSSH الكتابة المباشرة على جذر العزل:
sudo mkdir -p /home/jailuser/uploads

تفرض خدمة OpenSSH شرطاً أمنياً صارماً لمنع اختراق بيئة chroot؛ حيث يجب أن تعود ملكية الدليل المقيد بالكامل للمستخدم الخارق root مع ضبط صلاحيات مقيدة:
sudo chown root:root /home/jailuser && sudo chmod 755 /home/jailuser

نمنح الحساب صلاحية التحكم الكامل في مجلد الرفع المخصص فقط:
sudo chown jailuser:jailuser /home/jailuser/uploads

نتحقق من صحة مصفوفة الصلاحيات المطبقة على المسارين:
ls -ld /home/jailuser /home/jailuser/uploads
توضح النتائج أن المسار الرئيسي محمي بواسطة root:root بصلاحيات drwxr-xr-x، في حين يخضع المجلد الداخلي uploads لملكية jailuser:jailuser، محققاً بذلك المتطلبات المعيارية لأمان SFTP Chroot Jail.

يوفر إتقان أداة chroot في أوبونتو ركيزة متينة للمهندسين ومديري النظم، سواء لإنشاء بيئات تشغيل معزولة واختبار التطبيقات، أو لاستعادة كفاءة الخوادم المتعثرة وحماية خدمات نقل الملفات بكفاءة واحترافية.