setgid(2)

الاسم
setgid - تعيين هوية المجموعة

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

موجز
#include <unistd.h>

int setgid(gid_t gid);

الوصف
تضبط setgid() معرف المجموعة الفعّال للعملية المستدعية. إذا كانت العملية المستدعية مميزة (بدقة: تمتلك القدرة CAP_SETGID في نطاق المستخدم الخاص بها)، يتم أيضًا ضبط معرف المجموعة الحقيقي ومعرف المجموعة المحفوظ.

تحت لينكس، تُنفذ setgid() مثل نسخة POSIX مع ميزة _POSIX_SAVED_IDS. يسمح هذا لبرنامج set-group-ID غير set-user-ID-root بإسقاط جميع صلاحيات مجموعته، والقيام ببعض الأعمال غير المميزة، ثم إعادة تفعيل معرف المجموعة الفعّال الأصلي بطريقة آمنة.

قيمة الإرجاع
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EINVAL
    معرف المجموعة المحدد في gid غير صالح في نطاق المستخدم هذا.

EPERM
    العملية المستدعية ليست مميزة (لا تمتلك القدرة CAP_SETGID في نطاق المستخدم الخاص بها)، و gid لا يطابق معرف المجموعة الحقيقي أو معرف المجموعة المحفوظ للعملية المستدعية.

الإصدارات

  الاختلافات بين مكتبة C والنواة
على مستوى النواة، معرفات المستخدمين والمجموعات هي سمة لكل خيط. ومع ذلك، تتطلب POSIX أن تشترك جميع الخيوط في عملية ما في نفس بيانات الاعتماد. يعالج تنفيذ خيوط NPTL متطلبات POSIX من خلال توفير دوال غلاف لاستدعاءات النظام المختلفة التي تغير UIDs و GIDs للعملية. تستخدم دوال الغلاف هذه (بما في ذلك دالة setgid()) تقنية قائمة على الإشارات لضمان أنه عندما يغير خيط بيانات اعتماده، فإن جميع الخيوط الأخرى في العملية تغير أيضًا بيانات اعتمادها. للتفاصيل، انظر nptl(7).

المعايير
POSIX.1-2024.

التاريخ
POSIX.1-2001، SVr4.

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

انظر أيضًا
getgid(2), setegid(2), setregid(2), capabilities(7), credentials(7), user_namespaces(7)

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

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

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