في كثير من الأنظمة، يتوفر للمستخدم الجذر أو المستخدم المحترف تحكمًا كاملاً في النظام. ولا يتعرف "النظام الثانوي للتطبيقات المستندة إلى UNIX‏ (SUA)" على المستخدم الجذر. وفي حالة تطوير مقياس "واجهة نظام التشغيل المحمولة" (POSIX)، يعتبر مبدأ المستخدم الجذر مشكلة إدارية. وبدلاً من المستخدم الجذر، يقوم مقياس POSIX بتعريف امتيازات مناسبة لبعض العمليات.

في هذا الموضوع

setuid و setgid

تسمح الآليتان setuid و setgid لبرنامج، في حالة تشغيله، بأخذ أوجه معينة لحساب أمان أساسي بدلاً من تلك الخاصة بالمستخدم الذي يقوم بتشغيل البرنامج. وهاتان الآليتان تسمحان للبرنامج بتبديل هذه الأوجه بين الآليات الخاصة باستدعاء المستخدم وتلك الخاصة بمبدأ أمان آخر.

ولهذا تعتبر المزايا المناسبة مميزة. وبينما تسمح الآليتان setuid و setgid للتطبيق بالتحكم في إجابة السؤال: "من أنت؟"، تجيب المزايا المناسبة عن السؤال: "ماذا يمكنك أن تفعل؟"

النظام الفرعي للتطبيقات والهويات المستندة إلى UNIX

في بيئات UNIX القياسية، يوجد بالتحديد مستخدم واحد تم منحه كافة المزايا. يكون لهذا المستخدم، الذي يطلق عليه بشكل عام root، uid == 0. وفي "النظام الثانوي للتطبيقات المستندة إلى UNIX"، يتم منح كافة المزايا المدعمة على نظام محدد للمستخدمين الذين هم أعضاء إما في مجموعة "المسؤولين" أو في مجموعة "مسؤولي المجال" على ذلك النظام. ولا يستلزم ذلك تسجيل الدخول كمسؤول. يمتلك أي مستخدم يتمتع بعضوية إما في مجموعة Administrators أو في مجموعة Domain Administrators، امتيازات root. ولا تعتبر كافة المزايا المعرفة في POSIX أو UNIX متوفرة في النظام الثانوي للتطبيقات المستندة إلى UNIX‏ (SUA)؛ مما يعني، أنه توجد مزايا محددة لم يتم منحها لأي مستخدم.

يتم طلب المزايا المحددة عادةً لمجموعة من الإجراءات. وهذا يتضمن الوصول إلى نظام الملف أو إرسال إشارات إلى عمليات أخرى (التحكم في العمليات) أو تغيير معرف المستخدم (UID) الفعال أو معرف المجموعة (GID) وذلك لتغيير قدرة تلك العملية على أداء إجراءات محددة.

طبقاً لمقياس POSIX، يتوفر لأحد الملفات أذونات تتضمن وحدات بت لتعيين معرِّف المستخدم (UID‏) (setuid) وتعيين المعرِّف العمومي (GID)‏ (setgid). في حالة تعيين أيٍ من وحدتي بت أو كليهما على أحد الملفات وقيام عملية بتشغيل هذا الملف، تكتسب العملية معرِّف المستخدم (UID) أو المعرِّف العمومي (GID) للملف. تسمح هذه الآلية لمستخدم لا يتمتع بأي امتيازات بتشغيل البرامج التي يتم تشغيلها مع وجود أعلى امتيازات لمالك الملف أو المجموعة. أما في حالة استخدامهما بشكل غير صحيح، بالرغم من ذلك، فيمكن أن يؤدي ذلك إلى مهام الأمان وذلك بالسماح لمستخدمين غير مميزين بتنفيذ إجراءات ينبغي القيام بها من قبل أحد المسؤولين. ولهذا السبب، لا يدعم النظام الثانوي للتطبيقات المستندة إلى UNIX‏ (SUA) هذه الآلية افتراضيًا. وبدلاً من ذلك، إذا كنت تحاول تشغيل أحد الملفات بتعيين أي من وحدتي بت الخاصة بـ setuid أو setgid، فلن يقوم SUA بتشغيل ويقوم بإرجاع رمز الخطأ ENOSETUID.

إعداد الاعتبارات لـ setuid في النظام الفرعي للتطبيقات المستندة إلى UNIX

في حالة الاعتماد على أحد التطبيقات التي تتطلب سلوك POSIX القياسي، يمكن تكوين SUA لتشغيل الملفات مع مجموعة وحدات بت الخاصة بـ setuid أو setgid. في حالة تكوين‏ SUA بهذه الطريقة، عندما تقوم إحدى العمليات بتشغيل ملف يمتلك مجموعة بت الخاصة بـ setuid أو setgid، يقوم SUA بتوجيه رموز أمان محلية مميزة للعملية مع تعيين الامتيازات لمالك الملف أو مجموعته. ولأن الرموز المميزة هي رموز محلية، فلا يتم التعرف عليها من قبل أجهزة كمبيوتر أخرى على الشبكة. وهذا يعني أنه حتى إذا كان صاحب الملف عضوًا في مجموعة "مسؤولي المجال"، على سبيل المثال، فلا يتوفر للعملية حق وصول موثوق به من خلال شبكة Microsoft® Windows® إلى أجهزة كمبيوتر أخرى في المجال. وبدلاً من ذلك، ستكون المزايا فعالة فقط على الكمبيوتر الذي تعمل عليه العملية.

على سبيل المثال، تقوم إحدى العمليات بتشغيل ملف برنامج مزود بمجموعة البت setuid الخاصة به ومملوك لعضو في مجموعة Domain Administrators. وإذا حاول ذلك البرنامج تغيير كلمة مرور مستخدم المجال، ستفشل تلك المحاولة لأن رموز الأمان المميزة للعملية تعتبر رموزًا محلية ومن ثم فإنه لا يمكن التعرف عليها من قبل أنظمة أخرى في المجال. ومن ناحية أخرى، إذا حاول البرنامج تغيير كلمة مرور المستخدم المحلي، ستنجح المحاولة لأن صاحب الملف يعتبر عضوًا في مجموعة "مسؤولي المجال" التي عادةً ما تنتمي إلى مجموعة "مسؤولي" الكمبيوتر المحلي. للحصول على معلومات حول كيفية تكوين SUA لتشغيل ملفات المزودة بمجموعة وحدات البت setuid أو setgid، راجع ملفات "التعليمات" التي يتم إرسالها مع الأدوات المساعدة لتنزيل الحزم الخاصة بعدة تطوير البرامج (Software Development Kit) ‏(SDK) الخاصة بالتطبيقات المستندة إلى UNIX.

بالنسبة للدوال setuid(2) و setgid(2) و chroot(2)‎، يجب أن يتوفر للعملية UID الفعَّال الذي يقوم بالتعيين إلى حساب النظام أو حساب المسؤول للمجال المحلي أو حساب المسؤول للمجال الأساسي. حيث يمكن فقط أن يقوم حساب المسؤول المحلي بتغيير معرف المستخدم (UID) ومعرف المجموعة (GID) إلى معرف (ID) آخر في نفس المجال.

بالنسبة لـ chown(1) و chmod(1) و chgrp(1)‎، يجب أن يتوفر في لحساب مزايا Windows وهي SE_BACKUP وSE_RESTORE لتنفيذ عمليات make على ملفات مملوكة لمستخدم أو مجموعة أخرى أو لتعديل الأذونات على ملف مملوك لمستخدم آخر. حيث تنتمي هذه الأذونات عادةً إلى حسابات المسؤول ومنفذي النسخ الاحتياطي.

راجع أيضاً