capability Vs SUID في نظام لينكس

SUID اختصار لـ set user ID حيث يسمح لمستخدم بتشغيل ملف بصلاحيات مالك هذا الملف 
بس في البداية  خلينا نوضح بشكل سريع نظام صلاحيات الملفات في نظام لينكس
لوكتبت ls-la بداخل اي مجلد داخل لينكس راح يعرض لنا الملفات مع الصلاحيات ومالك الملف 

نتيجة تنفيذ امر ls-la
نتيجة تنفيذ امر ls-la

الصور التالية توضح لنا المخرجات بشكل اوضح


اللون الاحمر هو صلاحيات الملف
البرتقالي هو مالك الملف 
البنفسجي المجموعه

الصورة التاليه بتوضح لنا تقسيم صلاحيات الملف  

نلاحظ من اليسار ان الجزء الاحمر يوضح لنا نوع الملف 
اما الجزء الاصفر صلاحيات مالك الملف والازرق صلاحيات المجموعة
واخيرا اللون البنفسجي صلاحيات المستخدم 
كل جزء مكون من ثلاث خانات
r = يستطيع قراءه الملف فقط
w= يستطيع التعديل على الملف 
x= يستطيع تنفيذ الملف
– = ممنوع 

طيب كيف نقدر نعدل صلاحيات ملف ؟
نستخدم الامر التالي chmod 123 file
الرقم الاول للمالك والثاني للمجموعه والثالث لكل مستخدم اخر
هذه الصوره توضح لك الارقام مع الصلاحيات

جدول الصلاحيات والارقام في نظام لينكس
جدول الصلاحيات والارقام في نظام لينكس

لو حبيت تعدل صلاحيات ملف اسمه file بحيث ان المالك يستطيع القراءه والتعديل والتفيذ والبقيه قراءه فقط نكتب الامر التالي
chmod 744 file

بعد ماعرفنا نظام الصلاحيات نرجع لموضوعنا الاساسي الـ SUID  لاحظ الخانه الاخيره ( ) في مجوعه صلاحيات المالك في الصوره التاليه 


اذا كان بدالها s معناته الشخص الي بينفذ الملف راح ينفذه بصلاحيات المالك بمعنى  اذا كان فيه ملف يملكه root والمستخدم ibrahim يقدر يشغله  معناته يتنفذ بصلاحيات الروت
الفائده من SUID انه يعطي الادمن مرونه بحيث يسمح لمسخدم انه يشغل ملف بصلاحيات مستخدم آخر بدون تغيير صلاحياته.
لكن تخيل لو استطاع شخص ما استغلال هذا الملف والتعديل عليه لتنفيذ عمليه تخريبية على النظام ؟ 

او حتى تصعيد صلاحيات المستخدم!

في التدوينة القادمة راح نتكلم عن capability والفرق بينه وبين SUID