seteuid(2)

الاسم
seteuid, setegid - تعيين معرف المستخدم أو المجموعة الفعّال

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

موجز
#include <unistd.h>

int seteuid(uid_t euid);
int setegid(gid_t egid);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

seteuid(), setegid():
    _POSIX_C_SOURCE >= 200112L
        || /* glibc <= 2.19: */ _BSD_SOURCE

الوصف
تضبط seteuid() معرف المستخدم الفعّال للعملية المستدعية. العمليات غير المميزة قد تضبط معرف المستخدم الفعّال فقط إلى معرف المستخدم الحقيقي، أو معرف المستخدم الفعّال، أو معرف المستخدم المحفوظ.

ينطبق نفس الشيء تمامًا على setegid() مع "مجموعة" بدلاً من "مستخدم".

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

ملاحظة: هناك حالات قد تفشل فيها seteuid() حتى عندما يكون المستدعي UID 0؛ إن إهمال التحقق من إرجاع الفشل من seteuid() هو خطأ أمني خطير.

الأخطاء

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

EPERM
    في حالة seteuid(): العملية المستدعية ليست مميزة (لا تملك القدرة CAP_SETUID في مساحة اسم المستخدم الخاصة بها) و euid لا يطابق معرف المستخدم الحقيقي الحالي، أو معرف المستخدم الفعّال الحالي، أو معرف المستخدم المحفوظ الحالي.

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

الإصدارات
ضبط معرف المستخدم (المجموعة) الفعّال إلى معرف المستخدم المحفوظ (معرف المجموعة المحفوظ) ممكن منذ Linux 1.1.37 (1.1.38). على نظام اعتباطي يجب التحقق من _POSIX_SAVED_IDS.

تحت glibc 2.0، seteuid(euid) مكافئ لـ setreuid(-1, euid) وبالتالي قد يغير معرف المستخدم المحفوظ. تحت glibc 2.1 والإصدارات الأحدث، هو مكافئ لـ setresuid(-1, euid, -1) وبالتالي لا يغير معرف المستخدم المحفوظ. تنطبق ملاحظات مماثلة على setegid()، مع الفارق أن التغيير في التنفيذ من setregid(-1, egid) إلى setresgid(-1, egid, -1) حدث في glibc 2.2 أو 2.3 (اعتمادًا على بنية العتاد).

وفقًا لـ POSIX.1، seteuid() (setegid()) لا تحتاج إلى السماح لـ euid (egid) بأن تكون نفس قيمة معرف المستخدم (المجموعة) الفعّال الحالي، وبعض التطبيقات لا تسمح بذلك.

  الاختلافات بين مكتبة C والنواة
على Linux، seteuid() و setegid() مطبقتان كدوال مكتبة تستدعي، على التوالي، setresuid(2) و setresgid(2).

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

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

انظر أيضًا
geteuid(2), setresuid(2), setreuid(2), setuid(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.