setfsgid(2)

الاسم
setfsgid - تعيين هوية المجموعة المستخدمة لفحوصات نظام الملفات

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <sys/fsuid.h>

[[deprecated]] int setfsgid(gid_t fsgid);

الوصف
في لينكس، تمتلك العملية كلاً من معرف مجموعة نظام الملفات ومعرف مجموعة فعال. يُستخدم معرف مجموعة نظام الملفات (الخاص بلينكس) للتحقق من الأذونات عند الوصول إلى كائنات نظام الملفات، بينما يُستخدم معرف المجموعة الفعال لبعض أنواع أخرى من فحوصات الأذونات (انظر credentials(7)).

عادةً، تكون قيمة معرف مجموعة نظام الملفات للعملية مساوية لقيمة معرف مجموعتها الفعال. يحدث ذلك لأنه كلما تم تغيير معرف المجموعة الفعال للعملية، يغير النواة أيضًا معرف مجموعة نظام الملفات ليكون مساويًا للقيمة الجديدة لمعرف المجموعة الفعال. يمكن للعملية أن تجعل قيمة معرف مجموعة نظام الملفات تختلف عن معرف مجموعتها الفعال باستخدام setfsgid() لتغيير معرف مجموعة نظام الملفات إلى القيمة المعطاة في fsgid.

ستنجح setfsgid() فقط إذا كان المستدعي هو المستخدم الفائق أو إذا كان fsgid يطابق إما معرف المجموعة الحقيقي للمستدعي، أو معرف المجموعة الفعال، أو معرف المجموعة المحفوظ، أو معرف مستخدم نظام الملفات الحالي.

قيمة الإرجاع
عند النجاح والفشل على حد سواء، تُرجع هذه الاستدعاء معرف مجموعة نظام الملفات السابق للمستدعي.

المعايير
لينكس.

التاريخ
لينكس 1.2.

  الاختلافات بين مكتبة C والنواة
في glibc 2.15 والإصدارات الأقدم، عندما يحدد الغلاف لهذه الاستدعاء النظامي أن الوسيطة لا يمكن تمريرها إلى النواة دون اقتطاع عدد صحيح (لأن النواة قديمة ولا تدعم معرفات مجموعة 32 بت)، سيعيد -1 ويضبط errno إلى EINVAL دون محاولة الاستدعاء النظامي.

ملاحظات
تم اختراع مفهوم معرف مجموعة نظام الملفات واستدعاء النظام setfsgid() لأسباب تاريخية لم تعد قابلة للتطبيق على أنوية لينكس الحديثة. انظر setfsuid(2) لمناقشة لماذا استخدام كل من setfsuid(2) و setfsgid() غير ضروري في الوقت الحالي.

دعم استدعاء النظام الأصلي setfsgid() في لينكس معرفات مجموعة 16 بت فقط. لاحقًا، أضاف لينكس 2.4 setfsgid32() الذي يدعم معرفات 32 بت. تتعامل دالة الغلاف setfsgid() في glibc بشفافية مع الاختلاف عبر إصدارات النواة.

العلل
لا يتم إرجاع أي مؤشرات خطأ من أي نوع إلى المستدعي، وحقيقة أن كلاً من الاستدعاءات الناجحة وغير الناجحة تُرجع نفس القيمة تجعل من المستحيل تحديد ما إذا كان الاستدعاء قد نجح أو فشل مباشرة. بدلاً من ذلك، يجب على المستدعي اللجوء إلى النظر في القيمة المُرجعة من استدعاء آخر مثل setfsgid(-1) (والذي سيفشل دائمًا)، لتحديد ما إذا كان استدعاء سابق لـ setfsgid() قد غير معرف مجموعة نظام الملفات. على الأقل، يجب إرجاع EPERM عندما يفشل الاستدعاء (لأن المستدعي يفتقر إلى القدرة CAP_SETGID).

انظر أيضًا
kill(2), setfsuid(2), capabilities(7), credentials(7)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.