.\" -*- coding: UTF-8 -*- .\" Copyright 1994, Graeme W. Wilford .\" Copyright 2010-2015, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH setuid 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم setuid \- تعيين هوية المستخدم .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint setuid(uid_t \fP\fIuid\fP\fB);\fP .fi .SH الوصف تضبط \fBsetuid\fP() معرف المستخدم الفعّال للعملية المستدعية. إذا كانت العملية المستدعية مميزة (بدقة: إذا كانت العملية تملك القدرة \fBCAP_SETUID\fP في نطاق المستخدم الخاص بها)، يتم أيضًا ضبط UID الحقيقي ومعرف المستخدم المُعدّ المحفوظ. .P تحت لينكس، تُنفّذ \fBsetuid\fP() مثل نسخة POSIX مع ميزة \fB_POSIX_SAVED_IDS\fP. يسمح هذا لبرنامج set\-user\-ID (غير root) بإسقاط جميع صلاحيات المستخدم الخاصة به، والقيام ببعض العمل غير المميز، ثم إعادة استخدام معرف المستخدم الفعّال الأصلي بطريقة آمنة. .P إذا كان المستخدم هو root أو البرنامج هو set\-user\-ID\-root، يجب توخي الحذر الخاص: تفحص \fBsetuid\fP() معرف المستخدم الفعّال للمستدعي وإذا كان المستخدم الفائق، يتم ضبط جميع معرفات المستخدم المرتبطة بالعملية إلى \fIuid\fP. بعد حدوث هذا، يستحيل على البرنامج استعادة صلاحيات root. .P وبالتالي، لا يمكن لبرنامج set\-user\-ID\-root الذي يرغب في إسقاط صلاحيات root مؤقتًا، وافتراض هوية مستخدم غير مميز، ثم استعادة صلاحيات root لاحقًا استخدام \fBsetuid\fP(). يمكنك تحقيق هذا باستخدام \fBseteuid\fP(2). .SH "قيمة الإرجاع" عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .P \fIملاحظة\fP: هناك حالات قد تفشل فيها \fBsetuid\fP() حتى عندما يكون UID المستدعي هو 0؛ إنه خطأ أمني جسيم إغفال التحقق من إرجاع الفشل من \fBsetuid\fP(). .SH الأخطاء .TP \fBEAGAIN\fP سيغير الاستدعاء UID الحقيقي للمستدعي (أي، \fIuid\fP لا يطابق UID الحقيقي للمستدعي)، ولكن كان هناك فشل مؤقت في تخصيص هياكل بيانات النواة الضرورية. .TP \fBEAGAIN\fP لا يطابق \fIuid\fP معرف المستخدم الحقيقي للمستدعي وسيجلب هذا الاستدعاء عدد العمليات التابعة لمعرف المستخدم الحقيقي \fIuid\fP فوق حد المورد \fBRLIMIT_NPROC\fP للمستدعي. منذ لينكس 3.1، لم تعد حالة الخطأ هذه تحدث (لكن يجب على التطبيقات القوية التحقق من هذا الخطأ)؛ انظر وصف \fBEAGAIN\fP في \fBexecve\fP(2). .TP \fBEINVAL\fP معرف المستخدم المحدد في \fIuid\fP غير صالح في نطاق المستخدم هذا. .TP \fBEPERM\fP المستخدم غير مميز (لينكس: لا يملك القدرة \fBCAP_SETUID\fP في نطاق المستخدم الخاص به) ولا يطابق \fIuid\fP UID الحقيقي أو معرف المستخدم المُعدّ المحفوظ للعملية المستدعية. .SH الإصدارات .SS "الاختلافات بين مكتبة C والنواة" على مستوى النواة، معرفات المستخدم ومعرفات المجموعة هي سمة لكل خيط. ومع ذلك، تتطلب POSIX أن تشارك جميع الخيوط في عملية ما نفس بيانات الاعتماد. تعالج تنفيذ خيوط NPTL متطلبات POSIX من خلال توفير دوال غلاف لاستدعاءات النظام المختلفة التي تغير UIDs و GIDs للعملية. تستخدم دوال الغلاف هذه (بما في ذلك دالة \fBsetuid\fP()) تقنية قائمة على الإشارات لضمان أنه عندما يغير خيط واحد بيانات الاعتماد، فإن جميع الخيوط الأخرى في العملية تغير أيضًا بيانات اعتمادها. للتفاصيل، انظر \fBnptl\fP(7). .SH المعايير POSIX.1\-2024. .SH التاريخ POSIX.1\-2001، SVr4. .P .\" SVr4 documents an additional EINVAL error condition. غير متوافق تمامًا مع استدعاء 4.4BSD، الذي يضبط جميع معرفات المستخدم الحقيقية والمحفوظة والفعالة. .P دعم استدعاء نظام لينكس الأصلي \fBsetuid\fP() معرفات مستخدم 16\-bit فقط. لاحقًا، أضاف لينكس 2.4 \fBsetuid32\fP() لدعم معرفات 32\-bit. تتعامل دالة الغلاف \fBsetuid\fP() في glibc بشفافية مع الاختلاف عبر إصدارات النواة. .SH ملاحظات يملك لينكس مفهوم معرف مستخدم نظام الملفات، الذي يساوي عادة معرف المستخدم الفعّال. يضبط استدعاء \fBsetuid\fP() أيضًا معرف مستخدم نظام الملفات للعملية المستدعية. انظر \fBsetfsuid\fP(2). .P إذا كان \fIuid\fP مختلفًا عن UID الفعّال القديم، سيُمنع العملية من ترك تفريغات أساسية. .SH "انظر أيضًا" \fBgetuid\fP(2), \fBseteuid\fP(2), \fBsetfsuid\fP(2), \fBsetreuid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBuser_namespaces\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .