نظرة عامة
تُعد أداة capsh (غلاف صدفة القدرات) وسيلة بالغة الأهمية للمطورين ومديري النظم عند استكشاف واختبار قدرات نواة لينكس (Linux Capabilities) التي تتحكم في مستويات امتيازات المعالجات بدقة. يركز هذا الدليل العملي على استخدام capsh داخل بيئة أوبونتو؛ بدءاً من إعداد حزمة العمل وفحص الصلاحيات الحالية، مروراً بفك تشفير الأقنعة الست عشرية، ووصولاً إلى تقنيات إسقاط الامتيازات الزائدة وعزل بيئة التشغيل عبر حسابات المستخدمين المحدودة.
تثبيت حزمة libcap2-bin واستكشاف أذونات المعالج الحالية (–print)
للحصول على أداة capsh والبدء في استعراض مصفوفة القدرات، نقوم بتثبيت حزمة الأدوات المساعدة libcap2-bin على نظام أوبونتو:

يقدم الأمر capsh --print تقريراً تفصيلياً عن الحالة الأمنية الحالية للمسار التنفيذي، حيث يستعرض مجموعات القدرات النشطة (مثل المجموعة الفعالة Effective، والمصرح بها Permitted، ومجموعة الحدود Bounding)، إلى جانب بيانات الهوية الأساسية كمعرف المستخدم UID ومعرف المجموعة GID وحالة رايات الأمان Securebits.
تتيح مراجعة هذا الإخراج تحديد النطاق الدقيق للسيطرة المتاحة للصدفة الحالية على موارد الخادم.
⚙️ [أبرز المعاملات وخيارات التشغيل]
--print : يعرض مصفوفة القدرات الشاملة للمعالج مع تفاصيل هوية المستخدم ورايات الأمان.--drop : يحذف بشكل دائم قدرات محددة من مجموعة الحدود (Bounding set).--caps : يحدد بدقة توليفة القدرات المراد تطبيقها على سياق التشغيل.--user : ينفذ الأوامر تحت هوية حساب ومجموعة مستخدم آخر لتجربة الصلاحيات.--inh : يضبط مجموعة الامتيازات الممكن توارثها بواسطة العمليات الفرعية (Inheritable).--addamb : يلحق صلاحيات محددة بالمجموعة المحيطة (Ambient) لتمريرها تلقائياً للملفات التنفيذية.--secbits : يحدد قيود رايات الأمان (Securebits) لتنظيم سياسات تعديل الامتيازات.--chroot : يعزل مسار التشغيل عبر تغيير الدليل الجذري إلى مسار محدد.

التحقق من توافق النواة وفك تشفير الأقنعة الثنائية (–supports, –decode)
يُستخدم الأمر capsh --supports=cap_net_raw للتأكد برمجياً من دعم نواة لينكس النشطة لصلاحية cap_net_raw.
عندما تكون القدرة المستهدفة مدعومة بالفعل في النواة، يكتمل تنفيذ الأمر ويعود برمز النجاح (0) دون طباعة أي نصوص في الطرفية.

وبالمثل، يتم التحقق من دعم صلاحية الإدارة الشاملة للنظام cap_sys_admin عن طريق تشغيل capsh --supports=cap_sys_admin.
يُعد هذا الفحص الصامت أداة مفيدة للغاية داخل سكربتات التشغيل الآلي للتحقق المسبق من جاهزية البيئة قبل محاولة تفعيل امتيازات معينة.

يقوم الأمر capsh --decode=0x000001ffffffffff بترجمة القناع الرقمي المكتوب بالنظام الست عشري—والذي يظهر عادة في ملفات الحالة مثل /proc/[PID]/status—إلى أسماء الصلاحيات النصية المقابلة له.
يكشف الناتج بوضوح عن جميع القدرات النشطة داخل هذا القناع، مثل cap_chown وcap_sys_admin وcap_bpf، مما يسهل عملية التدقيق الأمني وتفسير السجلات.

حجب الصلاحيات غير المطلوبة وتطبيق عزل العمليات (–drop)
يعمل الأمر capsh --drop=cap_chown,cap_setuid --print على تجريد العملية بصورة نهائية من صلاحيتي cap_chown وcap_setuid ضمن مجموعة الحدود (Bounding set)، ثم يعرض تقرير الصلاحيات بعد التعديل.
يؤكد غياب هاتين الميزتين من قائمة Bounding set وحقل Current IAB نجاح تقليص الامتيازات وحصرها في الحدود الدنيا المطلوبة.

وللتحقق من ثبات هذا التجريد داخل العمليات المشتقة، يُنفذ الأمر capsh --drop=cap_chown -- -c "capsh --print | grep 'Bounding set'".
يُبين الناتج المصفى أن المعالج الابن المنبثق قد ورث بيئة التشغيل المقيدة دون صلاحية cap_chown، مما يضمن استمرار العزل الأمني حتى مع استدعاء أوامر فرعية جديدة.

الانتقال لحساب محدود الامتيازات وتعيين قدرات مخصصة (–user, –caps)
يُمكّننا الأمر capsh --user=nobody --print من خفض مستوى صلاحيات الصدفة والتحول إلى الحساب غير المتميز nobody، ثم استعراض السمات الأمنية الناتجة.
يُظهر التقرير تغير معرفات المستخدم والمجموعة إلى القيم الخاصة بحساب nobody (65534)، مما يوضح الحالة الأمنية القياسية المجردة من الصلاحيات الإضافية.

يُتيح الأمر المتقدم capsh --user=nobody --caps="cap_net_bind_service+ep cap_setpcap-ep" --print تشغيل المعالج بهوية nobody مع منحه حصرياً قدرة حجز المنافذ الشبكية المحمية cap_net_bind_service في مجموعتي الصلاحيات الفعالة (Effective) والمسموحة (Permitted).
يُثبت ظهور القيمة cap_net_bind_service=ep في سطر Current إمكانية تمكين التطبيقات من ربط المنافذ المنخفضة بأمان دون الحاجة لتشغيلها بصلاحيات root الكاملة.

استعرضنا في هذا الدليل التطبيقي خطوات توظيف أمر capsh على نظام أوبونتو للتحقق من إمكانيات لينكس والتحكم في حدود العمليات.
يُساعد الاعتماد على توزيع القدرات الدقيقة بدلاً من منح الامتيازات الجذرية الشاملة في تأمين بيئات العمل وتقليل المخاطر الأمنية للنظام بشكل فعال.