setuid
في الأنظمة الشبيهة بنظام يونكس ، تسمح علامات حقوق الوصول setuid و setgid (اختصارًا لـ " تعيين هوية المستخدم" و "تعيين هوية المجموعة ") [ 1 ] للمستخدمين بتشغيل ملف تنفيذي بصلاحيات نظام الملفات الخاصة بمالك الملف أو المجموعة على التوالي، وتغيير سلوك المجلدات. ويُستخدم هذان الخياران غالبًا لتمكين مستخدمي نظام الحاسوب من تشغيل البرامج بصلاحيات مرتفعة مؤقتًا لأداء مهمة محددة. مع أن صلاحيات معرف المستخدم أو معرف المجموعة المفترضة ليست دائمًا مرتفعة، إلا أنها على الأقل محددة.
تُستخدم هذه العلامات setuidلتنفيذ setgidمهام تتطلب صلاحيات مختلفة عن الصلاحيات الممنوحة للمستخدم عادةً، مثل القدرة على تعديل ملفات النظام أو قواعد البيانات لتغيير كلمة مرور تسجيل الدخول. [ 2 ] مع ذلك، قد لا تكون بعض المهام التي تتطلب صلاحيات إضافية واضحةً للوهلة الأولى، مثل pingالأمر الذي يجب أن يرسل ويستقبل حزم التحكم على واجهة الشبكة.
الآثار
تختلف تأثيرات العلامتين ` setuid--` و`-- setgid` باختلاف ما إذا كانتا تُطبقان على ملف، أو مجلد، أو ملف تنفيذي ثنائي، أو ملف تنفيذي غير ثنائي. وتؤثر العلامتان `--` setuidو` --` فقط على الملفات التنفيذية الثنائية، وليس على البرامج النصية (مثل Bash وPerl وPython). [ 3 ]setgid
عند تعيينه على ملف قابل للتنفيذ
عند تعيين سمات setuid setuidأو setuid لملف تنفيذي ، يقوم أي مستخدم قادر على تشغيل الملف بتشغيله تلقائيًا بصلاحيات مالك الملف (عادةً المستخدم الجذر ) و/أو مجموعة الملف، وذلك بناءً على العلامات المُعينة [ 2 ]، وذلك عن طريق تعيين مُعرّف المستخدم الفعلي للعملية التي تُشغّل الملف إلى مالك الملف، أو تعيين مُعرّف المجموعة الفعلي للعملية التي تُشغّل الملف إلى مجموعة الملف. يسمح هذا لمصمم النظام بالسماح بتشغيل برامج موثوقة لا يُسمح للمستخدم العادي بتشغيلها في الأحوال العادية. قد لا تكون هذه البرامج واضحة دائمًا. على سبيل المثال، قد يحتاج أمر ping إلى صلاحيات الشبكة التي لا يمكن للمستخدم العادي الوصول إليها؛ لذلك، قد يُمنح علامة setuid لضمان قدرة المستخدم الذي يحتاج إلى إرسال طلبات ping إلى نظام آخر على القيام بذلك، حتى لو لم يكن حسابه يملك الصلاحية المطلوبة لإرسال الحزم.setgid
التأثير الأمني
لأغراض أمنية، عادة ما يمنع النظام المستخدم المستدعي من تغيير العملية الجديدة بأي شكل من الأشكال، مثل استخدام ptrace، أو تحديد متغيرات البيئة مثل PATHأو LD_LIBRARY_PATH، أو إرسال إشارات إليها، لاستغلال الامتياز المرفوع، على الرغم من أنه سيتم قبول الإشارات من الجهاز الطرفي.
على الرغم من أن هذه setuidالخاصية مفيدة للغاية في كثير من الحالات، إلا أن استخدامها غير السليم قد يُشكل خطرًا أمنيًا [ 2 ] إذا setuidتم تعيينها لبرامج تنفيذية لم تُصمم بعناية. ونظرًا للمخاطر الأمنية المحتملة، [ 4 ] تتجاهل العديد من أنظمة التشغيل هذه setuidالخاصية عند تطبيقها على نصوص shell التنفيذية . [ 5 ]
يُفسر وجود setuidالملفات التنفيذية سبب عدم توفر chrootاستدعاء النظام للمستخدمين غير الجذر على أنظمة يونكس. راجع قيود النظامchroot لمزيد من التفاصيل.
عند تعيينه على دليل
يؤدي تعيين setgidالإذن على مجلد إلى توريث ملكية المجموعة للملفات والمجلدات الفرعية التي يتم إنشاؤها داخله، بدلاً من المجموعة الأساسية لعملية إنشاء الملف. كما ترث المجلدات الفرعية التي تم إنشاؤها هذا setgidالإذن. يتم تطبيق هذه السياسة فقط أثناء الإنشاء، وبالتالي، بشكل استباقي فقط. لا تتأثر المجلدات والملفات الموجودة عند setgidتطبيق الإذن، وكذلك المجلدات والملفات التي يتم نقلها إلى المجلد الذي تم تعيين الإذن عليه.
يسمح هذا لمجموعة من المستخدمين بالعمل مع الملفات دون تحديد الأذونات بشكل صريح، ولكنه مقيد بتوقع نموذج الأمان بأن أذونات الملفات الحالية لا تتغير ضمنيًا.
هذا غير مطلوب عمومًا في معظم الأنظمة المشتقة من BSD ، حيث يتم التعامل مع الدلائل افتراضيًا كما لو أن بتاتها setgidمضبوطة دائمًا، بغض النظر عن القيمة الفعلية. [ 6 ]
في نظام FreeBSD ، يؤدي تعيين setuidبت suiddir على دليل في نظام ملفات UFS مثبت باستخدام خيار suiddir إلى وراثة الملفات والأدلة الفرعية التي يتم إنشاؤها داخله لملكية هذا الدليل، بدلاً من معرف المستخدم الخاص بعملية إنشاء الملف. [ 7 ]
حماية
يجب تصميم وتنفيذ الملفات التنفيذية التي تُفعّل عليها هذه البتات بعناية فائقة لتجنب الثغرات الأمنية، بما في ذلك تجاوز سعة المخزن المؤقت وحقن المسار . تسمح هجمات تجاوز سعة المخزن المؤقت الناجحة على التطبيقات المعرضة للخطر للمهاجم بتنفيذ تعليمات برمجية عشوائية بصلاحيات العملية المُستغلة. في حال استخدام عملية معرضة للخطر هذه setuidالبتة للتشغيل كـ root، فسيتم تنفيذ التعليمات البرمجية بصلاحيات الجذر، مما يمنح المهاجم فعليًا صلاحيات الجذر على النظام الذي تعمل عليه العملية المعرضة للخطر.
يُعدّ بيئة العملية أمرًا بالغ الأهمية في حالة العمليات التي تستخدم setuidامتيازات معينة. فإذا لم تُنظّف هذه البيئة بشكل صحيح بواسطة عملية ذات امتيازات، فقد تُغيّر العملية التي بدأتها والتي لا تملك امتيازات سلوكها. [ 8 ] على سبيل المثال، كانت مكتبة GNU libc في وقت ما عُرضة للاستغلال باستخدام متغير بيئي سمح بتنفيذ تعليمات برمجية من مكتبات مشتركة غير موثوقة . [ 9 ]setgidsetuid
تاريخ
setuidاخترع دينيس ريتشي هذه التقنية [ 10 ] ، وكانت موجودة في الإصدار الأول من نظام يونكس. [ 10 ] تقدمت جهة عمله، مختبرات بيل للهواتف آنذاك ، بطلب للحصول على براءة اختراع عام 1972. مُنحت براءة الاختراع عام 1979 برقم US 4135240 بعنوان "حماية محتويات ملفات البيانات" ، وأُتيحت للملكية العامة في العام نفسه. [ 11 ] [ 8 ] [ 12 ]
انتهت صلاحية براءة الاختراع في عام 1996. [ 13 ]
انظر أيضاً
مراجع
- ↑ فون هاجن، ويليام (13 مايو 2010). دليل أوبونتو لينكس . جون وايلي وأولاده. الصفحات 3-59 . ISBN 9780470881804.
- 1 2 3 فريش، إيلين (9 فبراير 2009). أساسيات إدارة النظام . أورايلي. ص 351. ISBN 9780596550493.
- ↑ بيليموريا، كايوان ن. (2018). برمجة الأنظمة العملية باستخدام لينكس: استكشاف واجهات برمجة نظام لينكس، النظرية والتطبيق . دار نشر باكت المحدودة. ص 250. ISBN 978-1-78899-674-7.
- ↑ "Unix - الأسئلة الشائعة" .
- ↑ كيث بوستيك (12 أكتوبر 1988). "ردًا على: الإصدار الرابع من النظام الخامس..." مجموعة الأخبار : comp.unix.wizards .
لا يسمح توزيع بيركلي الحالي (4.3BSD-tahoe) بتشغيل البرامج النصية باستخدام setuid/gid.
- ↑ – دليل استدعاءات نظام FreeBSD "عند إنشاء ملف جديد، يتم إعطاؤه مجموعة الدليل الذي يحتويه."
- ↑ – دليل استدعاءات نظام FreeBSD
- 1 2 براون، نيل (23 نوفمبر 2010). "أشباح ماضي يونكس، الجزء 4: التصاميم التي تتطلب صيانة عالية" . LWN.net . تم الاطلاع عليه في 30 مارس 2014 .
- ↑ إيدج، جيك (27 أكتوبر 2010). "ثغرتان أمنيتان في مكتبة glibc" . LWN.net . تم الاطلاع عليه في 30 مارس 2014 .
- 1 2 ماكيلروي، إم. دوغلاس (1987). قارئ يونكس البحثي: مقتطفات مشروحة من دليل المبرمج، 1971-1986 (ملف PDF) (تقرير فني). مختبرات بيل. 139.
- ↑ روبنز، أرنولد (2025). تطوير تطبيقات لينكس بالأمثلة: واجهات برمجة التطبيقات الأساسية ( الطبعة الثانية). أديسون-ويسلي بروفيشنال. ISBN 978-0135325520تم الاطلاع عليه بتاريخ 17 أبريل 2026. قامت
شركة AT&T بمنح براءة الاختراع للجمهور، مما يسمح لأي شخص باستخدام تقنيتها.
- ↑ دوردال، بيت (2010). "أخلاقيات الحاسوب، خريف 2010، الأسبوع 11" . تاريخ الاسترجاع: 17 أبريل 2026.
1973: تمكنت شركة AT&T بطريقة ما من الحصول على براءة اختراع لبت setuid، مدعيةً أنه مكون مادي. أُتيحت هذه البراءة للملكية العامة في عام 1979.
- ↑ "ملخص براءات اختراع البرمجيات الرئيسية" .
روابط خارجية
- تشين، هاو؛ فاغنر، ديفيد ؛ ودين، درو؛ تبسيط مفهوم السيتويد (ملف PDF)
- تسافرير، دان؛ دا سيلفا، ديلما ؛ وواغنر، ديفيد؛ القضية الغامضة لتغيير هوية العملية: مراجعة مفهوم سيتويد المبسط (ملف PDF)
- بولوك، واين؛ أذونات وأنماط ملفات ومجلدات يونكس
- إجراءات أمن الحاسوب
- تقنية نظام ملفات يونكس
