.\" -*- coding: UTF-8 -*- .\" Copyright, Andrew Morgan .\" Copyright 2006-2008, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH capget 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم capget, capset \- ضبط/جلب قدرات الخيوط .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP /* تعريف ثوابت \fBCAP_*\fP و \fB _LINUX_CAPABILITY_*\fP */ \fB#include \fP /* تعريف ثوابت \fBSYS_*\fP */ \fB#include \fP .P \fBint syscall(SYS_capget, cap_user_header_t \fP\fIhdrp\fP\fB,\fP \fB cap_user_data_t \fP\fIdatap\fP\fB);\fP \fBint syscall(SYS_capset, cap_user_header_t \fP\fIhdrp\fP\fB,\fP \fB const cap_user_data_t \fP\fIdatap\fP\fB);\fP .fi .P \fIملاحظة\fP: لا توفر glibc أغلفة لنداءات النظام هذه، مما يستلزم استخدام \fBsyscall\fP(2). .SH الوصف استدعاءات النظام هاتان هما الواجهة الخام للنواة لجلب وضبط قدرات الخيوط. ليست هذه الاستدعاءات خاصة بلينكس فحسب، بل إن واجهة برمجة النواة عرضة للتغيير واستخدام هذه الاستدعاءات (خاصة تنسيق أنواع \fIcap_user_*_t\fP) يخضع للتوسع مع كل مراجعة للنواة، لكن البرامج القديمة ستستمر في العمل. .P .\" الواجهات المحمولة هي \fBcap_set_proc\fP(3) و \fBcap_get_proc\fP(3); إذا أمكن، ينبغي استخدام تلك الواجهات في التطبيقات; انظر الملاحظات. .SS "التفاصيل الحالية" الآن بعد أن حُذرت، إليك بعض تفاصيل النواة الحالية. تُعرف الهياكل على النحو التالي. .P .in +4n .EX .\" commit e338d263a76af78fe8f38a72131188b58fceb591 .\" Added 64 bit capability support .\" commit ca05a99a54db1db5bca72eccb5866d2a86f8517f #define _LINUX_CAPABILITY_VERSION_1 0x19980330 #define _LINUX_CAPABILITY_U32S_1 1 \& /* V2 added in Linux 2.6.25; deprecated */ #define _LINUX_CAPABILITY_VERSION_2 0x20071026 #define _LINUX_CAPABILITY_U32S_2 2 \& /* V3 added in Linux 2.6.26 */ #define _LINUX_CAPABILITY_VERSION_3 0x20080522 #define _LINUX_CAPABILITY_U32S_3 2 \& typedef struct __user_cap_header_struct { __u32 version; int pid; } *cap_user_header_t; \& typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } *cap_user_data_t; .EE .in .P الحقول \fIeffective\fP و \fIpermitted\fP و \fIinheritable\fP هي أقنعة بت للقدرات المعرفة في \fBcapabilities\fP(7). لاحظ أن قيم \fBCAP_*\fP هي فهارس بت وتحتاج إلى إزاحة بت قبل إجراء عملية OR في حقول البت. لتعريف الهياكل لتمريرها إلى استدعاء النظام، عليك استخدام أسماء \fIstruct __user_cap_header_struct\fP و \fIstruct __user_cap_data_struct\fP لأن التعريفات بالنوع هي مؤشرات فقط. .P النوى قبل لينكس 2.6.25 تفضل قدرات 32\-بت مع الإصدار \fB_LINUX_CAPABILITY_VERSION_1\fP. أضاف لينكس 2.6.25 مجموعات قدرات 64\-بت، مع الإصدار \fB_LINUX_CAPABILITY_VERSION_2\fP. لكن كان هناك خلل في واجهة برمجة التطبيقات، وأضاف لينكس 2.6.26 \fB_LINUX_CAPABILITY_VERSION_3\fP لإصلاح المشكلة. .P لاحظ أن قدرات 64\-بت تستخدم \fIdatap[0]\fP و \fIdatap[1]\fP، بينما قدرات 32\-بت تستخدم \fIdatap[0]\fP فقط. .P على النوى التي تدعم قدرات الملفات (دعم قدرات VFS)، تتصرف استدعاءات النظام هذه بشكل مختلف قليلاً. أُضيف هذا الدعم كخيار في لينكس 2.6.24، وأصبح ثابتًا (غير اختياري) في لينكس 2.6.33. .P لاستدعاءات \fBcapget\fP()، يمكن استكشاف قدرات أي عملية بتحديد معرف العملية الخاص بها بقيمة حقل \fIhdrp\->pid\fP. .P .\" للتفاصيل حول البيانات، انظر \fBcapabilities\fP(7). .SS "مع دعم قدرات VFS" .\" تستخدم قدرات VFS سمة موسعة للملف (انظر \fBxattr\fP(7)) للسماح بإرفاق القدرات بالملفات القابلة للتنفيذ. يُهمل نموذج الامتياز هذا دعم النواة لعملية واحدة تضبط قدرات أخرى بشكل غير متزامن. أي، على النوى التي لديها دعم قدرات VFS، عند استدعاء \fBcapset\fP()، القيم المسموح بها فقط لـ \fIhdrp\->pid\fP هي 0 أو، بشكل مكافئ، القيمة التي يُرجعها \fBgettid\fP(2). .SS "بدون دعم قدرات VFS" على النوى الأقدم التي لا توفر دعم قدرات VFS، يمكن لـ \fBcapset\fP()، إذا كان لدى المستدعي قدرة \fBCAP_SETPCAP\fP، أن يُستخدم لتغيير ليس فقط قدرات المستدعي نفسه، بل أيضًا قدرات الخيوط الأخرى. يعمل الاستدعاء على قدرات الخيط المحدد بحقل \fIpid\fP من \fIhdrp\fP عندما يكون غير صفري، أو على قدرات خيط الاستدعاء إذا كان \fIpid\fP يساوي 0. إذا كان \fIpid\fP يشير إلى عملية أحادية الخيط، فيمكن تحديد \fIpid\fP كمعرف عملية تقليدي; العمل على خيط من عملية متعددة الخيوط يتطلب معرف خيط من النوع الذي يُرجعه \fBgettid\fP(2). لـ \fBcapset\fP()، يمكن أن يكون \fIpid\fP أيضًا: \-1، بمعنى تنفيذ التغيير على جميع الخيوط باستثناء المستدعي و \fBinit\fP(1); أو قيمة أقل من \-1، وفي هذه الحالة يُطبق التغيير على جميع أعضاء مجموعة العملية التي معرفها هو \fI\-pid\fP. .SH "قيمة الإرجاع" عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .P تفشل الاستدعاءات مع الخطأ \fBEINVAL\fP، وتضبط حقل \fIversion\fP من \fIhdrp\fP إلى القيمة المفضلة للنواة لـ \fB_LINUX_CAPABILITY_VERSION_?\fP عند تحديد قيمة \fIversion\fP غير مدعومة. بهذه الطريقة، يمكن استكشاف ما هي المراجعة المفضلة الحالية للقدرات. .SH الأخطاء .TP \fBEFAULT\fP عنوان ذاكرة سيئ. يجب ألا يكون \fIhdrp\fP NULL. يمكن أن يكون \fIdatap\fP NULL فقط عندما يحاول المستخدم تحديد تنسيق إصدار القدرات المفضل الذي تدعمه النواة. .TP \fBEINVAL\fP أحد الوسائط كان غير صالح. .TP \fBEPERM\fP جرت محاولة لإضافة قدرة إلى المجموعة المسموح بها، أو لضبط قدرة في المجموعة الفعالة غير موجودة في المجموعة المسموح بها. .TP \fBEPERM\fP جرت محاولة لإضافة قدرة إلى المجموعة القابلة للتوريث، وإما: .RS .IP \[bu] 3 تلك القدرة لم تكن في مجموعة الحدود للمستدعي; أو .IP \[bu] القدرة لم تكن في المجموعة المسموح بها للمستدعي وكان المستدعي يفتقر إلى قدرة \fBCAP_SETPCAP\fP في مجموعته الفعالة. .RE .TP \fBEPERM\fP حاول المستدعي استخدام \fBcapset\fP() لتعديل قدرات خيط غير نفسه، لكنه افتقر إلى الامتياز الكافي. بالنسبة للنوى التي تدعم قدرات VFS، هذا غير مسموح به أبدًا. بالنسبة للنوى التي تفتقر إلى دعم VFS، قدرة \fBCAP_SETPCAP\fP مطلوبة. (خطأ في النوى قبل لينكس 2.6.11 يعني أن هذا الخطأ يمكن أن يحدث أيضًا إذا حاول خيط بدون هذه القدرة تغيير قدراته الخاصة بتحديد حقل \fIpid\fP كقيمة غير صفرية (أي القيمة التي يُرجعها \fBgetpid\fP(2)) بدلاً من 0.) .TP \fBESRCH\fP لا يوجد خيط كهذا. .SH المعايير لينكس. .SH ملاحظات الواجهة المحمولة لوظائف استعلام وضبط القدرات تُوفرها مكتبة \fIlibcap\fP وهي متاحة هنا: .br .UR http:\://git.kernel.org/cgit\:/linux\:/kernel\:/git\:/morgan\:\:/libcap.git .UE .SH "انظر أيضًا" \fBclone\fP(2)، \fBgettid\fP(2)، \fBcapabilities\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 .