.\" -*- coding: UTF-8 -*- .\" Copyright 2002, 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 القدرات 7 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم القدرات \- نظرة عامة على قدرات لينكس .SH الوصف لغرض إجراء فحص الأذونات، تُميز تطبيقات يونكس التقليدية بين فئتين من العمليات: العمليات \fIالمتميزة\fP (التي يكون معرف المستخدم الفعلي لها 0، ويُشار إليها بالمستخدم الخارق أو الجذر root)، والعمليات \fIغير المتميزة\fP (التي يكون معرف المستخدم الفعلي لها غير صفري). تتخطى العمليات المتميزة جميع فحوصات أذونات النواة، بينما تخضع العمليات غير المتميزة لفحص أذونات كامل بناءً على بيانات اعتماد العملية (عادةً: معرف المستخدم الفعلي، ومعرف المجموعة الفعلي، وقائمة المجموعات الإضافية). .P .\" بدءًا من لينكس 2.2، يقسم لينكس الامتيازات المرتبطة تقليديًا بالمستخدم الخارق إلى وحدات متميزة تُعرف باسم \fIالقدرات\fP، والتي يمكن تفعيلها وتعطيلها بشكل مستقل. القدرات هي سمة لكل خيط (thread). .SS "قائمة القدرات" توضح القائمة التالية القدرات المطبقة في لينكس، والعمليات أو السلوكيات التي تسمح بها كل قدرة: .TP \fBCAP_AUDIT_CONTROL\fP (منذ لينكس 2.6.11) تفعيل وتعطيل تدقيق النواة؛ وتغيير قواعد مرشح التدقيق؛ واسترداد حالة التدقيق وقواعد الترشيح. .TP \fBCAP_AUDIT_READ\fP (منذ لينكس 3.16) .\" commit a29b694aa1739f9d76538e34ae25524f9c549d59 .\" commit 3a101b8de0d39403b2c7e5c23fd0b005668acf48 السماح بقراءة سجل التدقيق عبر مقبس netlink متعدد البث. .TP \fBCAP_AUDIT_WRITE\fP (منذ لينكس 2.6.11) .\" FIXME Add FAN_ENABLE_AUDIT كتابة السجلات في سجل تدقيق النواة. .TP \fBCAP_BLOCK_SUSPEND\fP (منذ لينكس 3.5) استخدام الميزات التي يمكنها منع تعليق النظام (\fBepoll\fP(7) \fBEPOLLWAKEUP\fP، و \fI/proc/sys/wake_lock\fP). .TP \fBCAP_BPF\fP (منذ لينكس 5.8) استخدام عمليات BPF المتميزة؛ انظر \fBbpf\fP(2) و \fBbpf\-helpers\fP(7). .IP أُضيفت هذه القدرة في لينكس 5.8 لفصل وظائف BPF عن قدرة \fBCAP_SYS_ADMIN\fP المحملة بأكثر من طاقتها. .TP \fBCAP_CHECKPOINT_RESTORE\fP (منذ لينكس 5.9) .\" commit 124ea650d3072b005457faed69909221c2905a1f .PD 0 .RS .IP \[bu] 3 تحديث \fI/proc/sys/kernel/ns_last_pid\fP (انظر \fBpid_namespaces\fP(7))؛ .IP \[bu] .\" FIXME There is also some use case relating to .\" prctl_set_mm_exe_file(); in the 5.9 sources, see .\" prctl_set_mm_map(). استخدام ميزة \fIset_tid\fP في \fBclone3\fP(2)؛ .IP \[bu] قراءة محتويات الروابط الرمزية في \fI/proc/\fPpid\fI/map_files\fP للعمليات الأخرى. .RE .PD .IP أُضيفت هذه القدرة في لينكس 5.9 لفصل وظائف الفحص/الاستعادة عن قدرة \fBCAP_SYS_ADMIN\fP المحملة بأكثر من طاقتها. .TP \fBCAP_CHOWN\fP إجراء تغييرات عشوائية على معرفات المستخدمين والمجموعات للملفات (انظر \fBchown\fP(2)). .TP \fBCAP_DAC_OVERRIDE\fP تخطي فحوصات أذونات القراءة والكتابة والتنفيذ للملفات. (DAC هو اختصار لـ "discretionary access control" أو التحكم في الوصول الاختياري.) .TP \fBCAP_DAC_READ_SEARCH\fP .PD 0 .RS .IP \[bu] 3 تخطي فحوصات أذونات قراءة الملفات وفحوصات أذونات قراءة وتنفيذ الدلائل؛ .IP \[bu] استدعاء \fBopen_by_handle_at\fP(2)؛ .IP \[bu] استخدام علامة \fBAT_EMPTY_PATH\fP في \fBlinkat\fP(2) لإنشاء رابط لملف يشار إليه بواصف ملف (file descriptor). .RE .PD .TP \fBCAP_FOWNER\fP .PD 0 .RS .IP \[bu] 3 تخطي فحوصات الأذونات في العمليات التي تتطلب عادةً مطابقة معرف مستخدم نظام الملفات للعملية مع معرف مستخدم الملف (مثل \fBchmod\fP(2) و \fButime\fP(2))، باستثناء العمليات التي تغطيها \fBCAP_DAC_OVERRIDE\fP و \fBCAP_DAC_READ_SEARCH\fP؛ .IP \[bu] ضبط علامات العقدة (inode) (انظر \fBFS_IOC_SETFLAGS\fP(2const)) على ملفات عشوائية؛ .IP \[bu] ضبط قوائم التحكم في الوصول (ACLs) على ملفات عشوائية؛ .IP \[bu] تجاهل البتة اللزجة (sticky bit) للدليل عند حذف ملف؛ .IP \[bu] تعديل السمات الممتدة لـ \fIالمستخدم\fP في دليل لزج مملوك لأي مستخدم؛ .IP \[bu] تحديد \fBO_NOATIME\fP لملفات عشوائية في \fBopen\fP(2) و \fBfcntl\fP(2). .RE .PD .TP \fBCAP_FSETID\fP .PD 0 .RS .IP \[bu] 3 عدم مسح بتات وضع معرف المستخدم المعين (set\-user\-ID) ومعرف المجموعة المعين (set\-group\-ID) عند تعديل ملف؛ .IP \[bu] ضبط بتة معرف المجموعة المعين (set\-group\-ID) لملف لا يتطابق معرف مجموعته (GID) مع نظام الملفات أو أي من معرفات المجموعات الإضافية للمستدعِي. .RE .PD .TP \fBCAP_IPC_LOCK\fP .\" FIXME . As at Linux 3.2, there are some strange uses of this capability .\" in other places; they probably should be replaced with something else. .PD 0 .RS .IP \[bu] 3 قفل الذاكرة (\fBmlock\fP(2)، و \fBmlockall\fP(2)، و \fBmmap\fP(2)، و \fBshmctl\fP(2))؛ .IP \[bu] تخصيص ذاكرة باستخدام الصفحات الضخمة (\fBmemfd_create\fP(2)، و \fBmmap\fP(2)، و \fBshmctl\fP(2)). .RE .PD .TP \fBCAP_IPC_OWNER\fP تخطي فحوصات الأذونات للعمليات على كائنات System V IPC. .TP \fBCAP_KILL\fP .\" FIXME . CAP_KILL also has an effect for threads + setting child .\" termination signal to other than SIGCHLD: without this .\" capability, the termination signal reverts to SIGCHLD .\" if the child does an exec(). What is the rationale .\" for this? تخطي فحوصات الأذونات لإرسال الإشارات (انظر \fBkill\fP(2)). وهذا يتضمن استخدام عملية \fBKDSIGACCEPT\fP في \fBioctl\fP(2). .TP \fBCAP_LEASE\fP (منذ لينكس 2.4) إنشاء عقود إيجار (leases) على ملفات عشوائية (انظر \fBfcntl\fP(2)). .TP \fBCAP_LINUX_IMMUTABLE\fP تعيين علامتي العنصر \fBFS_APPEND_FL\fP و \fBFS_IMMUTABLE_FL\fP (انظر \fBFS_IOC_SETFLAGS\fP(2const)). .TP \fBCAP_MAC_ADMIN\fP (منذ لينكس 2.6.25) السماح بضبط MAC أو تغيير حالته. مطبق لوحدة أمن لينكس Smack (LSM). .TP \fBCAP_MAC_OVERRIDE\fP (منذ لينكس 2.6.25) تخطي التحكم الإلزامي في الوصول (MAC). مطبق لوحدة Smack LSM. .TP \fBCAP_MKNOD\fP (منذ لينكس 2.4) إنشاء ملفات خاصة باستخدام \fBmknod\fP(2). .TP \fBCAP_NET_ADMIN\fP إجراء عمليات متنوعة متعلقة بالشبكة: .PD 0 .RS .IP \[bu] 3 ضبط الواجهة؛ .IP \[bu] إدارة جدار حماية IP والتنكر (masquerading) والمحاسبة؛ .IP \[bu] تعديل جداول التوجيه؛ .IP \[bu] الارتباط بأي عنوان للوكيل الشفاف؛ .IP \[bu] ضبط نوع الخدمة (TOS)؛ .IP \[bu] مسح إحصائيات التعريف؛ .IP \[bu] ضبط الوضع المختلط (promiscuous mode)؛ .IP \[bu] تفعيل البث المتعدد؛ .IP \[bu] استخدام \fBsetsockopt\fP(2) لضبط خيارات المقبس التالية: \fBSO_DEBUG\fP، و \fBSO_MARK\fP، و \fBSO_PRIORITY\fP (لأولوية خارج النطاق من 0 إلى 6)، و \fBSO_RCVBUFFORCE\fP، و \fBSO_SNDBUFFORCE\fP. .RE .PD .TP \fBCAP_NET_BIND_SERVICE\fP ربط مقبس بمنافذ متميزة في نطاق الإنترنت (أرقام منافذ أقل من 1024). .TP \fBCAP_NET_BROADCAST\fP .\" FIXME Since Linux 4.2, there are use cases for netlink sockets .\" commit 59324cf35aba5336b611074028777838a963d03b (غير مستخدمة) إجراء بث للمقابس، والاستماع للبث المتعدد. .TP \fBCAP_NET_RAW\fP .PD 0 .RS .IP \[bu] 3 استخدام مقابس RAW و PACKET؛ .IP \[bu] الارتباط بأي عنوان للوكيل الشفاف. .RE .PD .\" Also various IP options and setsockopt(SO_BINDTODEVICE) .TP \fBCAP_PERFMON\fP (منذ لينكس 5.8) استخدام آليات مراقبة الأداء المتنوعة، بما في ذلك: .RS .IP \[bu] 3 .PD 0 استدعاء \fBperf_event_open\fP(2)؛ .IP \[bu] استخدام عمليات BPF المتنوعة التي لها آثار على الأداء. .RE .PD .IP أُضيفت هذه القدرة في لينكس 5.8 لفصل وظائف مراقبة الأداء عن قدرة \fBCAP_SYS_ADMIN\fP المحملة بأكثر من طاقتها. انظر أيضًا ملف مصدر النواة \fIDocumentation/admin\-guide/perf\-security.rst\fP. .TP \fBCAP_SETGID\fP .RS .PD 0 .IP \[bu] 3 إجراء تلاعبات عشوائية بمعرفات مجموعات العملية وقائمة معرفات المجموعات الإضافية؛ .IP \[bu] تزييف معرف المجموعة عند تمرير بيانات اعتماد المقبس عبر مقابس نطاق يونكس؛ .IP \[bu] كتابة تخطيط لمعرف المجموعة في مساحة اسم مستخدم (انظر \fBuser_namespaces\fP(7)). .PD .RE .TP \fBCAP_SETFCAP\fP (منذ لينكس 2.6.24) ضبط قدرات عشوائية على ملف. .IP .\" commit db2e718a47984b9d71ed890eb2ea36ecf150de18 منذ لينكس 5.12، أصبحت هذه القدرة مطلوبة أيضًا لتخطيط معرف المستخدم 0 في مساحة اسم مستخدم جديدة؛ انظر \fBuser_namespaces\fP(7) للتفاصيل. .TP \fBCAP_SETPCAP\fP إذا كانت قدرات الملفات مدعومة (أي منذ لينكس 2.6.24): إضافة أي قدرة من مجموعة حدود الخيط المستدعي إلى مجموعته القابلة للتوريث؛ وإسقاط القدرات من مجموعة الحدود (عبر \fBprctl\fP(2) \fBPR_CAPBSET_DROP\fP)؛ وإجراء تغييرات على علامات \fIsecurebits\fP. .IP إذا كانت قدرات الملفات غير مدعومة (أي قبل لينكس 2.6.24): منح أو إزالة أي قدرة في مجموعة القدرات المسموح بها للمستدعي إلى أو من أي عملية أخرى. (هذه الخاصية لـ \fBCAP_SETPCAP\fP غير متاحة عندما تُضبط النواة لدعم قدرات الملفات، حيث أن لـ \fBCAP_SETPCAP\fP دلالات مختلفة تمامًا في هذه النوى.) .TP \fBCAP_SETUID\fP .RS .PD 0 .IP \[bu] 3 إجراء تلاعبات عشوائية بمعرفات مستخدمي العملية (\fBsetuid\fP(2)، و \fBsetreuid\fP(2)، و \fBsetresuid\fP(2)، و \fBsetfsuid\fP(2))؛ .IP \[bu] تزييف معرف المستخدم عند تمرير بيانات اعتماد المقبس عبر مقابس نطاق يونكس؛ .IP \[bu] كتابة تخطيط لمعرف المستخدم في مساحة اسم مستخدم (انظر \fBuser_namespaces\fP(7)). .PD .RE .\" FIXME CAP_SETUID also an effect in exec(); document this. .TP \fBCAP_SYS_ADMIN\fP \fIملاحظة\fP: هذه القدرة مُحمّلة بأكثر مما ينبغي؛ انظر \fIملاحظات لمطوري النواة\fP أدناه. .IP .PD 0 .RS .IP \[bu] 3 إجراء مجموعة من عمليات إدارة النظام بما في ذلك: \fBquotactl\fP(2)، و\fBmount\fP(2)، و\fBumount\fP(2)، و\fBpivot_root\fP(2)، و\fBswapon\fP(2)، و\fBswapoff\fP(2)، و\fBsethostname\fP(2)، و\fBsetdomainname\fP(2)؛ .IP \[bu] إجراء عمليات \fBsyslog\fP(2) ذات الامتيازات (منذ لينكس 2.6.37، يُفضل استخدام \fBCAP_SYSLOG\fP للسماح بمثل هذه العمليات)؛ .IP \[bu] إجراء أمر \fBVM86_REQUEST_IRQ\fP الخاص بـ \fBvm86\fP(2)؛ .IP \[bu] الوصول إلى نفس وظائف نقطة التحقق/الاستعادة التي تحكمها \fBCAP_CHECKPOINT_RESTORE\fP (لكن القدرة الأخيرة، الأضعف، هي المفضلة للوصول إلى تلك الوظائف). .IP \[bu] إجراء نفس عمليات BPF التي تحكمها \fBCAP_BPF\fP (لكن القدرة الأخيرة، الأضعف، هي المفضلة للوصول إلى تلك الوظائف). .IP \[bu] توظيف نفس آليات مراقبة الأداء التي تحكمها \fBCAP_PERFMON\fP (لكن القدرة الأخيرة، الأضعف، هي المفضلة للوصول إلى تلك الوظائف). .IP \[bu] إجراء عمليتي \fBIPC_SET\fP و\fBIPC_RMID\fP على كائنات System V IPC العشوائية؛ .IP \[bu] تجاوز حد الموارد \fBRLIMIT_NPROC\fP؛ .IP \[bu] إجراء عمليات على السمات الموسعة \fItrusted\fP و\fIsecurity\fP (انظر \fBxattr\fP(7))؛ .IP \[bu] استخدام \fBlookup_dcookie\fP(2)؛ .IP \[bu] استخدام \fBioprio_set\fP(2) لتعيين فئات جدولة المدخلات/المخرجات \fBIOPRIO_CLASS_RT\fP و(قبل لينكس 2.6.25) \fBIOPRIO_CLASS_IDLE\fP؛ .IP \[bu] تزوير معرف العملية (PID) عند تمرير بيانات الاستيثاق الخاصة بالمقبس عبر مقابس نطاق يونكس؛ .IP \[bu] تجاوز \fI/proc/sys/fs/file\-max\fP، وهو الحد الشامل للنظام لعدد الملفات المفتوحة، في استدعاءات النظام التي تفتح ملفات (مثل: \fBaccept\fP(2)، و\fBexecve\fP(2)، و\fBopen\fP(2)، و\fBpipe\fP(2))؛ .IP \[bu] توظيف أعلام \fBCLONE_*\fP التي تُنشئ مساحات أسماء جديدة باستخدام \fBclone\fP(2) و\fBunshare\fP(2) (لكن، منذ لينكس 3.8، إنشاء مساحات أسماء المستخدمين لا يتطلب أي قدرة)؛ .IP \[bu] الوصول إلى معلومات أحداث \fIperf\fP ذات الامتيازات؛ .IP \[bu] استدعاء \fBsetns\fP(2) (يتطلب \fBCAP_SYS_ADMIN\fP في مساحة أسماء \fIالمستهدف\fP)؛ .IP \[bu] استدعاء \fBfanotify_init\fP(2)؛ .IP \[bu] إجراء عمليات \fBKEYCTL_CHOWN\fP و\fBKEYCTL_SETPERM\fP الخاصة بـ \fBkeyctl\fP(2) ذات الامتيازات؛ .IP \[bu] إجراء عملية \fBMADV_HWPOISON\fP الخاصة بـ \fBmadvise\fP(2)؛ .IP \[bu] توظيف \fBTIOCSTI\fP \fBioctl\fP(2) لإدراج محارف في طابور مدخلات طرفية غير الطرفية التي يتحكم بها \fBالمستدعِي\fP؛ .IP \[bu] توظيف استدعاء النظام المهجور \fBnfsservctl\fP(2)؛ .IP \[bu] توظيف استدعاء النظام المهجور \fBbdflush\fP(2)؛ .IP \[bu] إجراء عمليات \fBioctl\fP(2) مختلفة ذات امتيازات على أجهزة كتلية؛ .IP \[bu] إجراء عمليات \fBioctl\fP(2) مختلفة ذات امتيازات على نظام الملفات؛ .IP \[bu] إجراء عمليات \fBioctl\fP(2) ذات امتيازات على جهاز \fI/dev/random\fP (انظر \fBrandom\fP(4))؛ .IP \[bu] تثبيت مرشح \fBseccomp\fP(2) دون الحاجة أولًا لضبط سمة الخيط \fIno_new_privs\fP؛ .IP \[bu] تعديل قواعد السماح/المنع لمجموعات التحكم في الأجهزة؛ .IP \[bu] توظيف عملية \fBPTRACE_SECCOMP_GET_FILTER\fP الخاصة بـ \fBptrace\fP(2) لتفريغ مرشحات seccomp الخاصة بالمُتتبَّع؛ .IP \[bu] توظيف عملية \fBPTRACE_SETOPTIONS\fP الخاصة بـ \fBptrace\fP(2) لتعليق حمائيات seccomp الخاصة بالمُتتبَّع (أي علم \fBPTRACE_O_SUSPEND_SECCOMP\fP)؛ .IP \[bu] إجراء عمليات إدارية على العديد من مشغلات الأجهزة؛ .IP \[bu] تعديل قيم اللطافة (nice) للمجموعات الآلية عبر الكتابة في \fI/proc/\fPpid\fI/autogroup\fP (انظر \fBsched\fP(7)). .RE .PD .TP \fBCAP_SYS_BOOT\fP استخدام \fBreboot\fP(2) و\fBkexec_load\fP(2). .TP \fBCAP_SYS_CHROOT\fP .RS .PD 0 .IP \[bu] 3 استخدام \fBchroot\fP(2)؛ .IP \[bu] تغيير مساحات أسماء الوصل باستخدام \fBsetns\fP(2). .PD .RE .TP \fBCAP_SYS_MODULE\fP .RS .PD 0 .IP \[bu] 3 تحميل وتفريغ وحدات النواة (انظر \fBinit_module\fP(2) و\fBdelete_module\fP(2))؛ .IP \[bu] قبل لينكس 2.6.25: إسقاط القدرات من مجموعة حدود القدرات الشاملة للنظام. .PD .RE .TP \fBCAP_SYS_NICE\fP .PD 0 .RS .IP \[bu] 3 خفض قيمة لطافة (nice) العملية (\fBnice\fP(2)، و\fBsetpriority\fP(2)) وتغيير قيمة اللطافة للعمليات العشوائية؛ .IP \[bu] ضبط سياسات جدولة الوقت الحقيقي للعملية المستدعِية، وضبط سياسات الجدولة والأولويات للعمليات العشوائية (\fBsched_setscheduler\fP(2)، و\fBsched_setparam\fP(2)، و\fBsched_setattr\fP(2))؛ .IP \[bu] ضبط انجذاب وحدة المعالجة المركزية (CPU affinity) للعمليات العشوائية (\fBsched_setaffinity\fP(2))؛ .IP \[bu] ضبط فئة وأولوية جدولة المدخلات/المخرجات للعمليات العشوائية (\fBioprio_set\fP(2))؛ .IP \[bu] .\" FIXME CAP_SYS_NICE also has the following effect for .\" migrate_pages(2): .\" do_migrate_pages(mm, &old, &new, .\" capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE); .\" .\" Document this. تطبيق \fBmigrate_pages\fP(2) على عمليات عشوائية والسماح بتهجير العمليات إلى عُقد عشوائية؛ .IP \[bu] تطبيق \fBmove_pages\fP(2) على عمليات عشوائية؛ .IP \[bu] استخدام علم \fBMPOL_MF_MOVE_ALL\fP مع \fBmbind\fP(2) و\fBmove_pages\fP(2). .RE .PD .TP \fBCAP_SYS_PACCT\fP استخدام \fBacct\fP(2). .TP \fBCAP_SYS_PTRACE\fP .PD 0 .RS .IP \[bu] 3 تتبع عمليات عشوائية باستخدام \fBptrace\fP(2)؛ .IP \[bu] فحص المعلومات الحساسة للعمليات الأخرى عبر \fI/proc\fP (مثلاً، قراءة \fI/proc/\fPpid\fI/maps\fP، أو \fI/proc/\fPpid\fI/mem\fP، أو قراءة الروابط الرمزية \fI/proc/\fPpid\fI/exe\fP، أو \fI/proc/\fPpid\fI/fd/*\fP)؛ .IP \[bu] تطبيق \fBget_robust_list\fP(2) على عمليات عشوائية؛ .IP \[bu] نقل البيانات من أو إلى ذاكرة عمليات عشوائية باستخدام \fBprocess_vm_readv\fP(2) و\fBprocess_vm_writev\fP(2)؛ .IP \[bu] فحص العمليات باستخدام \fBkcmp\fP(2)؛ .IP \[bu] إجراء عمليات فحص وتنقح عمليات أخرى ذات امتيازات. (انظر استخدامات دالة النواة \fIptrace_may_access\fP().) .RE .PD .TP \fBCAP_SYS_RAWIO\fP .PD 0 .RS .IP \[bu] 3 إجراء عمليات منافذ المدخلات/المخرجات (\fBiopl\fP(2) و\fBioperm\fP(2))؛ .IP \[bu] الوصول إلى \fI/proc/kcore\fP؛ .IP \[bu] توظيف عملية \fBFIBMAP\fP \fBioctl\fP(2)؛ .IP \[bu] فتح الأجهزة للوصول إلى مسجلات x86 المحددة للطراز (MSRs، انظر \fBmsr\fP(4))؛ .IP \[bu] تحديث \fI/proc/sys/vm/mmap_min_addr\fP؛ .IP \[bu] إنشاء تخطيطات ذاكرة عند عناوين أقل من القيمة المحددة بواسطة \fI/proc/sys/vm/mmap_min_addr\fP؛ .IP \[bu] تخطيط الملفات في \fI/proc/bus/pci\fP؛ .IP \[bu] فتح \fI/dev/mem\fP و\fI/dev/kmem\fP؛ .IP \[bu] إجراء أوامر أجهزة SCSI مختلفة؛ .IP \[bu] إجراء عمليات معينة على أجهزة \fBhpsa\fP(4) و\fBcciss\fP(4)؛ .IP \[bu] إجراء مجموعة من العمليات الخاصة بالأجهزة على أجهزة أخرى. .RE .PD .TP \fBCAP_SYS_RESOURCE\fP .PD 0 .RS .IP \[bu] 3 استخدام المساحة المحجوزة على أنظمة ملفات ext2؛ .IP \[bu] إجراء استدعاءات \fBioctl\fP(2) للتحكم في تدوين ext3؛ .IP \[bu] تجاوز حدود حصص القرص؛ .IP \[bu] زيادة حدود الموارد (انظر \fBsetrlimit\fP(2))؛ .IP \[bu] تجاوز حد الموارد \fBRLIMIT_NPROC\fP؛ .IP \[bu] تجاوز الحد الأقصى لعدد الطرفيات عند تخصيص الطرفية؛ .IP \[bu] تجاوز الحد الأقصى لعدد خرائط المفاتيح؛ .IP \[bu] السماح بمقاطعات تزيد عن 64 هرتز من ساعة الوقت الحقيقي؛ .IP \[bu] رفع حد \fImsg_qbytes\fP لطابور رسائل System V فوق الحد الموجود في \fI/proc/sys/kernel/msgmnb\fP (انظر \fBmsgop\fP(2) و\fBmsgctl\fP(2))؛ .IP \[bu] السماح بتجاوز حد المورد \fBRLIMIT_NOFILE\fP لعدد واصفات الملفات "قيد التنفيذ" عند تمرير واصفات الملفات إلى عملية أخرى عبر مقبس نطاق يونكس (انظر \fBunix\fP(7))؛ .IP \[bu] تجاوز حد \fI/proc/sys/fs/pipe\-size\-max\fP عند ضبط سعة الأنبوب باستخدام أمر \fBF_SETPIPE_SZ\fP الخاص بـ \fBfcntl\fP(2)؛ .IP \[bu] استخدام \fBF_SETPIPE_SZ\fP لزيادة سعة الأنبوب فوق الحد المحدد بواسطة \fI/proc/sys/fs/pipe\-max\-size\fP؛ .IP \[bu] تجاوز حدود \fI/proc/sys/fs/mqueue/queues_max\fP، و\fI/proc/sys/fs/mqueue/msg_max\fP، و\fI/proc/sys/fs/mqueue/msgsize_max\fP عند إنشاء طوابير رسائل POSIX (انظر \fBmq_overview\fP(7))؛ .IP \[bu] توظيف عملية \fBPR_SET_MM\fP الخاصة بـ \fBprctl\fP(2)؛ .IP \[bu] ضبط \fI/proc/\fPpid\fI/oom_score_adj\fP لقيمة أقل من آخر قيمة ضُبطت بواسطة عملية تملك \fBCAP_SYS_RESOURCE\fP. .RE .PD .TP \fBCAP_SYS_TIME\fP ضبط ساعة النظام (\fBsettimeofday\fP(2)، و\fBstime\fP(2)، و\fBadjtimex\fP(2))؛ وضبط ساعة الوقت الحقيقي (العتاد). .TP \fBCAP_SYS_TTY_CONFIG\fP استخدام \fBvhangup\fP(2)؛ وتوظيف عمليات \fBioctl\fP(2) مختلفة ذات امتيازات على الطرفيات الافتراضية. .TP \fBCAP_SYSLOG\fP (منذ لينكس 2.6.37) .RS .PD 0 .IP \[bu] 3 إجراء عمليات \fBsyslog\fP(2) ذات الامتيازات. انظر \fBsyslog\fP(2) لمعلومات حول العمليات التي تتطلب امتيازات. .IP \[bu] عرض عناوين النواة المكشوفة عبر \fI/proc\fP والواجهات الأخرى عندما تكون قيمة \fI/proc/sys/kernel/kptr_restrict\fP هي 1. (انظر مناقشة \fIkptr_restrict\fP في \fBproc\fP(5).) .PD .RE .TP \fBCAP_WAKE_ALARM\fP (منذ لينكس 3.0) .\" إطلاق شيء من شأنه إيقاظ النظام (ضبط مؤقتا \fBCLOCK_REALTIME_ALARM\fP و\fBCLOCK_BOOTTIME_ALARM\fP). .SS "التطبيق السابق والحالي" يتطلب التطبيق الكامل للقدرات ما يلي: .IP \[bu] 3 بالنسبة لجميع العمليات ذات الامتيازات، يجب على النواة التحقق مما إذا كان الخيط يمتلك القدرة المطلوبة في مجموعته الفعالة. .IP \[bu] يجب أن توفر النواة استدعاءات نظام تسمح بتغيير واسترجاع مجموعات قدرات الخيط. .IP \[bu] يجب أن يدعم نظام الملفات إرفاق القدرات بملف قابل للتنفيذ، بحيث تكتسب العملية تلك القدرات عند تنفيذ الملف. .P .\" قبل لينكس 2.6.24، استُوفِي أول مطلبين فقط؛ ومنذ لينكس 2.6.24، استُوفِيت جميع المطالب الثلاثة. .SS "ملاحظات لمطوري النواة" عند إضافة ميزة جديدة للنواة يجب أن تُحكم بواسطة قدرة (capability)، تيقظ للنقاط التالية. .IP \[bu] 3 الهدف من القدرات هو تقسيم صلاحيات المستخدم الخارق إلى أجزاء، بحيث إذا اختُرق برنامج يمتلك قدرة واحدة أو أكثر، فإن قدرته على إلحاق الضرر بالنظام ستكون أقل مما لو كان البرنامج نفسه يعمل بصلاحيات الجذر (root). .IP \[bu] لديك الخيار إما بإنشاء قدرة جديدة لميزتك الجديدة، أو ربط الميزة بإحدى القدرات الموجودة حاليًا. وللحفاظ على مجموعة القدرات بحجم يمكن إدارته، يُفضل الخيار الأخير ما لم تكن هناك أسباب قاهرة لاتخاذ الخيار الأول. (هناك أيضًا حد تقني: حجم مجموعات القدرات محدود حاليًا بـ 64 بتة). .IP \[bu] لتحديد أي قدرة موجودة قد تكون الأنسب لربطها بميزتك الجديدة، راجع قائمة القدرات أعلاه للعثور على «صومعة» (silo) تناسب ميزتك الجديدة بشكل أفضل. أحد الأساليب المتبعة هو تحديد ما إذا كانت هناك ميزات أخرى تتطلب قدرات وتُستخدم دائمًا مع الميزة الجديدة. إذا كانت الميزة الجديدة عديمة الفائدة بدون هذه الميزات الأخرى، فيجب عليك استخدام نفس قدرة الميزات الأخرى. .IP \[bu] \fIلا\fP تختر \fBCAP_SYS_ADMIN\fP إذا كان بإمكانك تجنب ذلك! ترتبط نسبة هائلة من فحوصات القدرات الحالية بهذه القدرة (انظر القائمة الجزئية أعلاه). ويمكن تسميتها معقوليًا بـ «الجذر الجديد»، فمن ناحية تمنح نطاقًا واسعًا من الصلاحيات، ومن ناحية أخرى يعني نطاقها الواسع أنها القدرة المطلوبة من قبل العديد من البرامج ذات الامتيازات. لا تجعل المشكلة أسوأ. الميزات الجديدة الوحيدة التي يجب ربطها بـ \fBCAP_SYS_ADMIN\fP هي تلك التي تطابق \fIتمامًا\fP الاستخدامات الحالية في تلك الصومعة. .IP \[bu] .\" إذا قررت أنه من الضروري حقًا إنشاء قدرة جديدة لميزتك، فلا تجعلها أو تسمها كقدرة «أحادية الاستخدام». فمثلًا، إضافة القدرة النوعية جدًا \fBCAP_SYS_PACCT\fP كانت على الأرجح خطأً. بدلًا من ذلك، حاول تعريف وتسمية قدرتك الجديدة كصومعة أوسع يمكن أن تندرج تحتها حالات استخدام مستقبلية أخرى ذات صلة. .SS "مجموعات قدرات الخيط (Thread)" لكل خيط مجموعات القدرات التالية التي تحتوي على صفر أو أكثر من القدرات المذكورة أعلاه: .TP \fIالمسموح بها (Permitted)\fP هذه مجموعة عليا محددة للقدرات الفعالة التي قد يتقلدها الخيط. وهي أيضًا مجموعة عليا محددة للقدرات التي يمكن إضافتها إلى المجموعة القابلة للتوريث بواسطة خيط لا يمتلك القدرة \fBCAP_SETPCAP\fP في مجموعته الفعالة. .IP إذا تخلّى خيط عن قدرة من مجموعته المسموح بها، فلا يمكنه أبدًا استعادتها (إلا إذا استدعى \fBexecve\fP(2) لبرنامج set\-user\-ID\-root، أو لبرنامج تمنح قدرات ملفه المرتبطة تلك القدرة). .TP \fIالقابلة للتوريث (Inheritable)\fP هذه مجموعة من القدرات التي تُحفظ عبر \fBexecve\fP(2). تظل القدرات القابلة للتوريث قابلة للتوريث عند تنفيذ أي برنامج، وتُضاف القدرات القابلة للتوريث إلى المجموعة المسموح بها عند تنفيذ برنامج يحتوي على البتات المقابلة المضبطة في مجموعة الملف القابلة للتوريث. .IP نظرًا لأن القدرات القابلة للتوريث لا تُحفظ بشكل عام عبر \fBexecve\fP(2) عند التشغيل كمستخدم غير الجذر، فإن التطبيقات التي ترغب في تشغيل برامج مساعدة بقدرات مرفوعة يجب أن تنظر في استخدام القدرات المحيطة (ambient)، الموضحة أدناه. .TP \fIالفعالة (Effective)\fP هذه هي مجموعة القدرات التي تستخدمها النواة لإجراء فحوصات الأذونات للخيط. .TP \fIالمقيدة (Bounding)\fP (لكل خيط منذ لينكس 2.6.25) مجموعة القدرات المقيدة هي آلية يمكن استخدامها للحد من القدرات التي تُكتسب أثناء \fBexecve\fP(2). .IP منذ لينكس 2.6.25، أصبحت هذه مجموعة قدرات لكل خيط. في الأنوية الأقدم، كانت مجموعة القدرات المقيدة سمة على مستوى النظام تتشاركها جميع الخيوط في الحاسوب. .IP لمزيد من التفاصيل، انظر \fIمجموعة القدرات المقيدة\fP أدناه. .TP \fIالمحيطة (Ambient)\fP (منذ لينكس 4.3) .\" commit 58319057b7847667f0c9585b9de0e8932b0fdb08 هذه مجموعة من القدرات التي تُحفظ عبر \fBexecve\fP(2) لبرنامج غير ذي امتيازات. تلتزم مجموعة القدرات المحيطة بقاعدة ثابتة وهي أنه لا يمكن لأي قدرة أن تكون محيطة ما لم تكن مسموحًا بها وقابلة للتوريث في آن واحد. .IP يمكن تعديل مجموعة القدرات المحيطة مباشرة باستخدام \fBprctl\fP(2). وتُخفض القدرات المحيطة آليًا إذا خُفضت أي من القدرات المسموح بها أو القابلة للتوريث المقابلة لها. .IP تنفيذ برنامج يغير معرف المستخدم (UID) أو معرف المجموعة (GID) بسبب بتات set\-user\-ID أو set\-group\-ID، أو تنفيذ برنامج له أي قدرات ملفات مضبطة، سيؤدي إلى مسح المجموعة المحيطة. تُضاف القدرات المحيطة إلى المجموعة المسموح بها وتُعين للمجموعة الفعالة عند استدعاء \fBexecve\fP(2). إذا أدت القدرات المحيطة إلى زيادة القدرات المسموح بها والفعالة للعملية أثناء \fBexecve\fP(2)، فإن هذا لا يؤدي إلى تفعيل وضع التنفيذ الآمن الموصوف في \fBld.so\fP(8). .P يرث الابن المنشأ عبر \fBfork\fP(2) نسخًا من مجموعات قدرات والده. وللتفاصيل حول كيفية تأثير \fBexecve\fP(2) على القدرات، انظر \fIتحويل القدرات أثناء execve()‎\fP أدناه. .P باستخدام \fBcapset\fP(2)، قد يتلاعب الخيط بمجموعات قدراته الخاصة؛ انظر \fIضبط مجموعات القدرات برمجيًا\fP أدناه. .P .\" commit 73efc0394e148d0e15583e13712637831f926720 .\" منذ لينكس 3.2، يعرض الملف \fI/proc/sys/kernel/cap_last_cap\fP القيمة الرقمية لأعلى قدرة تدعمها النواة التي تعمل؛ ويمكن استخدامه لتحديد أعلى بتة يمكن ضبطها في مجموعة قدرات. .SS "قدرات الملفات" منذ لينكس 2.6.24، تدعم النواة ربط مجموعات القدرات بملف تنفيذي باستخدام \fBsetcap\fP(8). تُخزن مجموعات قدرات الملف في سمة ممتدة (انظر \fBsetxattr\fP(2) و \fBxattr\fP(7)) تسمى \fIsecurity.capability\fP. تتطلب الكتابة في هذه السمة الممتدة القدرة \fBCAP_SETFCAP\fP. تحدد مجموعات قدرات الملف، بالاقتران مع مجموعات قدرات الخيط، قدرات الخيط بعد \fBexecve\fP(2). .P مجموعات قدرات الملف الثلاث هي: .TP \fIالمسموح بها\fP (المعروفة سابقًا باسم \fIالقسرية\fP): تُسمح هذه القدرات آليًا للخيط، بغض النظر عن القدرات القابلة للتوريث للخيط. .TP \fIالقابلة للتوريث\fP (المعروفة سابقًا باسم \fIالمسموح بها\fP): تُجرى عملية AND المنطقية لهذه المجموعة مع مجموعة الخيط القابلة للتوريث لتحديد أي القدرات القابلة للتوريث ستُفعل في المجموعة المسموح بها للخيط بعد \fBexecve\fP(2). .TP \fIالفعالة\fP: هذه ليست مجموعة، بل مجرد بتة واحدة. إذا ضُبطت هذه البتة، فسيُرفع أثناء \fBexecve\fP(2) جميع القدرات الجديدة المسموح بها للخيط في المجموعة الفعالة أيضًا. وإذا لم تُضبط، فلن تكون أي من القدرات الجديدة المسموح بها في المجموعة الفعالة الجديدة بعد \fBexecve\fP(2). .IP .\" تفعيل بتة قدرة الملف الفعالة يعني أن أي قدرة ملف مسموح بها أو قابلة للتوريث تتسبب في اكتساب الخيط للقدرة المسموح بها المقابلة أثناء \fBexecve\fP(2) (انظر \fIتحويل القدرات أثناء execve()‎\fP أدناه) ستكتسب أيضًا تلك القدرة في مجموعتها الفعالة. لذا، عند تعيين قدرات لملف (\fBsetcap\fP(8)، \fBcap_set_file\fP(3)، \fBcap_set_fd\fP(3))، إذا حددنا علم الفعالية (effective flag) كمفعل لأي قدرة، فيجب أيضًا تحديد علم الفعالية كمفعل لجميع القدرات الأخرى التي فُعل لها علم المسموح به أو القابل للتوريث المقابل. .SS "إصدارات السمات الممتدة لقدرات الملفات" للسماح بالتوسع، تدعم النواة مخططًا لترميز رقم الإصدار داخل السمة الممتدة \fIsecurity.capability\fP المستخدمة لتنفيذ قدرات الملفات. أرقام الإصدارات هذه داخلية في التنفيذ، وليست مرئية مباشرة لتطبيقات فضاء المستخدم. حتى تاريخه، الإصدارات التالية مدعومة: .TP \fBVFS_CAP_REVISION_1\fP كان هذا هو التنفيذ الأصلي لقدرات الملفات، والذي كان يدعم أقنعة 32 بتة لقدرات الملفات. .TP \fBVFS_CAP_REVISION_2\fP (منذ لينكس 2.6.25) .\" commit e338d263a76af78fe8f38a72131188b58fceb591 يسمح هذا الإصدار بأقنعة قدرات ملفات بحجم 64 بتة، وكان ضروريًا مع نمو عدد القدرات المدعومة ليتجاوز 32. تستمر النواة بشفافية في دعم تنفيذ الملفات التي لها أقنعة قدرات الإصدار 1 بحجم 32 بتة، ولكن عند إضافة قدرات لملفات لم تكن تمتلك قدرات سابقًا، أو تعديل قدرات ملفات موجودة، فإنها تستخدم آليًا مخطط الإصدار 2 (أو ربما مخطط الإصدار 3، كما هو موضح أدناه). .TP \fBVFS_CAP_REVISION_3\fP (منذ لينكس 4.14) .\" commit 8db6c34f1dbc8e06aa016a9b829b06902c3e1340 قُدمت قدرات ملفات الإصدار 3 لدعم قدرات الملفات ذات فضاءات الأسماء (namespaced) (الموضحة أدناه). .IP كما هو الحال في قدرات الملفات من الإصدار 2، فإن أقنعة قدرات الإصدار 3 تكون بحجم 64 بتة. ولكن بالإضافة إلى ذلك، يُرمز معرف مستخدم الجذر لفضاء الأسماء في السمة الممتدة \fIsecurity.capability\fP. (معرف مستخدم الجذر لفضاء الأسماء هو القيمة التي يقابلها معرف المستخدم 0 داخل فضاء الأسماء هذا في فضاء أسماء المستخدمين المبدئي). .IP صُممت قدرات الملفات من الإصدار 3 لتتعايش مع قدرات الإصدار 2؛ أي أنه في نظام لينكس حديث، قد تكون هناك بعض الملفات بقدرات من الإصدار 2 بينما تمتلك أخرى قدرات من الإصدار 3. .P قبل لينكس 4.14، كان النوع الوحيد من السمات الممتدة لقدرات الملفات التي يمكن إرفاقها بملف هو سمة \fBVFS_CAP_REVISION_2\fP. ومنذ لينكس 4.14، يعتمد إصدار سمة \fIsecurity.capability\fP الممتدة المرفقة بالملف على الظروف التي أُنشئت فيها السمة. .P بدءًا من لينكس 4.14، تُنشأ سمة \fIsecurity.capability\fP الممتدة آليًا كسمة من الإصدار 3 (\fBVFS_CAP_REVISION_3\fP) (أو تُحول إليها) إذا تحقق الشرطان التاليان: .IP \[bu] 3 يقبع الخيط الذي يكتب السمة في فضاء أسماء مستخدمين غير مبدئي. (بشكل أدق: يقبع الخيط في فضاء أسماء مستخدمين غير الذي وُصل منه نظام الملفات الأساسي). .IP \[bu] يمتلك الخيط القدرة \fBCAP_SETFCAP\fP على فهرس (inode) الملف، مما يعني أن (أ) الخيط يمتلك القدرة \fBCAP_SETFCAP\fP في فضاء أسماء المستخدمين الخاص به؛ و(ب) معرف المستخدم (UID) ومعرف المجموعة (GID) لفهرس الملف لهما مقابلات في فضاء أسماء مستخدمي الكاتب. .P عند إنشاء سمة \fIsecurity.capability\fP ممتدة من نوع \fBVFS_CAP_REVISION_3\fP، يُحفظ معرف مستخدم الجذر لفضاء أسماء الخيط المنشئ في السمة الممتدة. .P على النقيض من ذلك، فإن إنشاء أو تعديل سمة \fIsecurity.capability\fP ممتدة من خيط ذي امتياز (\fBCAP_SETFCAP\fP) يقبع في فضاء الأسماء الذي وُصل منه نظام الملفات الأساسي (وهذا يعني عادةً فضاء أسماء المستخدمين المبدئي) يؤدي آليًا إلى إنشاء سمة من الإصدار 2 (\fBVFS_CAP_REVISION_2\fP). .P لاحظ أن إنشاء سمة \fIsecurity.capability\fP ممتدة من الإصدار 3 يتم آليًا. بمعنى أنه عندما يكتب تطبيق في فضاء المستخدم (\fBsetxattr\fP(2)) سمة \fIsecurity.capability\fP بتنسيق الإصدار 2، ستنشئ النواة آليًا سمة من الإصدار 3 إذا أُنشئت السمة في الظروف الموضحة أعلاه. وبالمقابل، عندما تسترجع (\fBgetxattr\fP(2)) عملية تقبع داخل فضاء أسماء مستخدمين أُنشئ بواسطة معرف مستخدم الجذر (أو سليل لفضاء الأسماء هذا) سمة \fIsecurity.capability\fP من الإصدار 3، فإن السمة المسترجعة تُبسط (آليًا) لتظهر كسمة من الإصدار 2 (أي أن القيمة المسترجعة تكون بحجم سمة الإصدار 2 ولا تتضمن معرف مستخدم الجذر). تعني هذه الترجمات الآلية أنه لا يلزم إجراء أي تغييرات على أدوات فضاء المستخدم (مثل \fBsetcap\fP(1) و \fBgetcap\fP(1)) لكي تُستخدم تلك الأدوات لإنشاء واسترجاع سمات \fIsecurity.capability\fP من الإصدار 3. .P .\" لاحظ أن الملف يمكن أن يرتبط بسمة \fIsecurity.capability\fP ممتدة إما من الإصدار 2 أو الإصدار 3، ولكن ليس كلاهما معًا: سيؤدي إنشاء أو تعديل سمة \fIsecurity.capability\fP الممتدة آليًا إلى تعديل الإصدار وفقًا للظروف التي أُنشئت أو عُدلت فيها السمة. .SS "تحويل القدرات أثناء execve()‎" أثناء \fBexecve\fP(2)، تحسب النواة القدرات الجديدة للعملية باستخدام الخوارزمية التالية: .P .in +4n .EX P'(ambient) = (الملف ذو امتياز) ? 0 : P(ambient) \& P'(permitted) = (P(inheritable) & F(inheritable)) | (F(permitted) & P(bounding)) | P'(ambient) \& P'(effective) = F(effective) ? P'(permitted) : P'(ambient) \& P'(inheritable) = P(inheritable) [أي بلا تغيير] \& P'(bounding) = P(bounding) [أي بلا تغيير] .EE .in .P حيث: .RS 4 .TP P()‎ يرمز لقيمة مجموعة قدرات الخيط قبل \fBexecve\fP(2) .TP P'()‎ يرمز لقيمة مجموعة قدرات الخيط بعد \fBexecve\fP(2) .TP F()‎ يرمز لمجموعة قدرات ملف .RE .P لاحظ التفاصيل التالية المتعلقة بقواعد تحويل القدرات المذكورة أعلاه: .IP \[bu] 3 مجموعة القدرات المحيطة موجودة فقط منذ لينكس 4.3. عند تحديد تحول المجموعة المحيطة أثناء \fBexecve\fP(2)، يُعد الملف ذو الامتياز هو الملف الذي يمتلك قدرات أو يكون فيه بت set\-user\-ID أو set\-group\-ID مضبطًا. .IP \[bu] قبل لينكس 2.6.25، كانت المجموعة المقيدة سمة على مستوى النظام تتشاركها جميع الخيوط. استُخدمت تلك القيمة العامة للنظام لحساب المجموعة المسموح بها الجديدة أثناء \fBexecve\fP(2) بنفس الطريقة الموضحة أعلاه لـ \fIP(bounding)\fP. .P \fIملاحظة\fP: أثناء تحولات القدرات الموضحة أعلاه، قد تُتجاهل قدرات الملف (تُعامل كأنها فارغة) لنفس الأسباب التي تُتجاهل فيها بتات set\-user\-ID و set\-group\-ID؛ انظر \fBexecve\fP(2). وتُتجاهل قدرات الملفات بالمثل إذا أُقلعت النواة مع خيار \fIno_file_caps\fP. .P .\" \fIملاحظة\fP: وفقًا للقواعد أعلاه، إذا قامت عملية بمعرفات مستخدمين غير صفرية بـ \fBexecve\fP(2)، فسيُمسح أي قدرات موجودة في مجموعاتها المسموح بها والفعالة. وبالنسبة لمعاملة القدرات عندما تقوم عملية بمعرف مستخدم صفر بـ \fBexecve\fP(2)، انظر \fIالقدرات وتنفيذ البرامج بواسطة الجذر\fP أدناه. .SS "فحص السلامة للثنائيات الغبية تجاه القدرات (capability\-dumb)" الثنائي الغبي تجاه القدرات هو تطبيق وُسم ليكون له قدرات ملفات، ولكنه لم يُحول لاستخدام واجهة برمجة تطبيقات \fBlibcap\fP(3) للتلاعب بقدراته. (بمعنى آخر، هذا برنامج set\-user\-ID\-root تقليدي تم تبديله لاستخدام قدرات الملفات، ولكن لم يُعدل كوده ليفهم القدرات). لمثل هذه التطبيقات، تُضبط بتة قدرة الملف الفعالة، بحيث تُفعل قدرات الملف المسموح بها آليًا في المجموعة الفعالة للعملية عند تنفيذ الملف. تتعرف النواة على الملف الذي يحتوي على بتة القدرة الفعالة المضبطة كغبي تجاه القدرات لغرض الفحص الموضح هنا. .P .\" عند تنفيذ ثنائي غبي تجاه القدرات، تفحص النواة ما إذا كانت العملية قد حصلت على جميع القدرات المسموح بها التي حُددت في مجموعة الملف المسموح بها، بعد إجراء تحولات القدرات الموضحة أعلاه. (السبب المعتاد لعدم حدوث ذلك هو أن مجموعة القدرات المقيدة حجبت بعض القدرات في مجموعة الملف المسموح بها). إذا لم تحصل العملية على كامل مجموعة قدرات الملف المسموح بها، يفشل \fBexecve\fP(2) مع الخطأ \fBEPERM\fP. يمنع هذا المخاطر الأمنية المحتملة التي قد تنشأ عند تنفيذ تطبيق غبي تجاه القدرات بامتيازات أقل مما يحتاج. لاحظ أنه، بحكم التعريف، لا يمكن للتطبيق نفسه التعرف على هذه المشكلة، لأنه لا يستخدم واجهة برمجة تطبيقات \fBlibcap\fP(3). .SS "القدرات وتنفيذ البرامج بواسطة الجذر" .\" See cap_bprm_set_creds(), bprm_caps_from_vfs_cap() and .\" handle_privileged_root() in security/commoncap.c (Linux 5.0 source) لمحاكاة دلالات يونكس التقليدية، تقوم النواة بمعاملة خاصة لقدرات الملفات عندما تقوم عملية بمعرف مستخدم 0 (الجذر) بتنفيذ برنامج وعند تنفيذ برنامج set\-user\-ID\-root. .P بعد إجراء أي تغييرات على المعرف الفعال للعملية التي حفزتها بتة وضع set\-user\-ID للثنائي \-على سبيل المثال، تبديل معرف المستخدم الفعال إلى 0 (الجذر) بسبب تنفيذ برنامج set\-user\-ID\-root\- تحسب النواة مجموعات قدرات الملف كما يلي: .IP (1) 5 إذا كان معرف المستخدم الحقيقي أو الفعال للعملية هو 0 (الجذر)، فتُتجاهل مجموعتا الملف القابلة للتوريث والمسموح بها؛ وبدلًا من ذلك تُعتبر نظريًا كلها آحادًا (أي جميع القدرات مفعلة). (هناك استثناء واحد لهذا السلوك، موضح في \fIبرامج set\-user\-ID\-root التي لها قدرات ملفات\fP أدناه). .IP (2) إذا كان معرف المستخدم الفعال للعملية هو 0 (الجذر) أو كانت بتة الملف الفعالة مفعلة في الواقع، فتُعرف بتة الملف الفعالة نظريًا بأنها واحد (مفعلة). .P تُستخدم هذه القيم النظرية لمجموعات قدرات الملف كما هو موضح أعلاه لحساب تحول قدرات العملية أثناء \fBexecve\fP(2). .P وبالتالي، عندما تقوم عملية بمعرفات مستخدمين غير صفرية بـ \fBexecve\fP(2) لبرنامج set\-user\-ID\-root ليس له قدرات مرفقة، أو عندما تقوم عملية معرفاتها الحقيقية والفعالة صفر بـ \fBexecve\fP(2) لبرنامج ما، يتبسط حساب القدرات المسموح بها الجديدة للعملية إلى: .P .in +4n .EX P'(permitted) = P(inheritable) | P(bounding) \& P'(effective) = P'(permitted) .EE .in .P ونتيجة لذلك، تكتسب العملية جميع القدرات في مجموعتي قدراتها المسموح بها والفعالة، باستثناء تلك التي حجبتها مجموعة القدرات المقيدة. (في حساب P'(permitted)، يمكن تبسيط المصطلح P'(ambient) وحذفه لأنه بحكم التعريف مجموعة جزئية مناسبة من P(inheritable)). .P .\" .\" يمكن تعطيل المعاملات الخاصة لمعرف المستخدم 0 (الجذر) الموضحة في هذا القسم الفرعي باستخدام آلية بتات الأمان (securebits) الموضحة أدناه. .SS "برامج set\-user\-ID\-root التي تمتلك قدرات ملفات" هناك استثناء واحد للسلوك الموصوف في \fIالقدرات وتنفيذ البرامج بواسطة الجذر\fP أعلاه. إذا كان (أ) الثنائي الذي يُنفذ له قدرات مرفقة و(ب) معرف المستخدم الحقيقي للعملية \fIليس\fP 0 (الجذر) و(ج) معرف المستخدم الفعال للعملية \fIهو\fP 0 (الجذر)، فحينها تُحترم بتات قدرات الملف (أي لا تُعتبر نظريًا كلها آحادًا). الطريقة المعتادة التي يمكن أن ينشأ بها هذا الموقف هي عند تنفيذ برنامج set\-UID\-root يمتلك أيضًا قدرات ملفات. عند تنفيذ مثل هذا البرنامج، تكتسب العملية فقط القدرات التي يمنحها البرنامج (أي ليس كل القدرات، كما يحدث عند تنفيذ برنامج set\-user\-ID\-root ليس له أي قدرات ملفات مرتبطة). .P .\" لاحظ أنه يمكن تعيين مجموعات قدرات فارغة لملف برنامج، وبالتالي من الممكن إنشاء برنامج set\-user\-ID\-root يغير معرف المستخدم الفعال والمحفوظ للعملية التي تنفذ البرنامج إلى 0، ولكنه لا يمنح أي قدرات لتلك العملية. .SS "مجموعة القدرات المقيدة" مجموعة القدرات المقيدة هي آلية أمنية يمكن استخدامها للحد من القدرات التي يمكن اكتسابها أثناء \fBexecve\fP(2). تُستخدم المجموعة المقيدة بالطرق التالية: .IP \[bu] 3 أثناء \fBexecve\fP(2)، تُجرى عملية AND المنطقية لمجموعة القدرات المقيدة مع مجموعة قدرات الملف المسموح بها، وتُعين نتيجة هذه العملية لمجموعة قدرات الخيط المسموح بها. وبذلك تضع مجموعة القدرات المقيدة حدًا للقدرات المسموح بها التي قد يمنحها ملف تنفيذي. .IP \[bu] (منذ لينكس 2.6.25) تعمل مجموعة القدرات المقيدة كمجموعة عليا محددة للقدرات التي يمكن للخيط إضافتها إلى مجموعته القابلة للتوريث باستخدام \fBcapset\fP(2). وهذا يعني أنه إذا لم تكن القدرة في المجموعة المقيدة، فلا يمكن للخيط إضافة هذه القدرة إلى مجموعته القابلة للتوريث، حتى لو كانت في قدراته المسموح بها، وبالتالي لا يمكن حفظ هذه القدرة في مجموعته المسموح بها عندما يستدعي \fBexecve\fP(2) لملف يحتوي على القدرة في مجموعته القابلة للتوريث. .P لاحظ أن المجموعة المقيدة تحجب قدرات الملف المسموح بها، ولكن ليس القدرات القابلة للتوريث. إذا احتفظ خيط بقدرة في مجموعته القابلة للتوريث لم تكن موجودة في مجموعته المقيدة، فيمكنه أن يكتسب تلك القدرة في مجموعته المسموح بها عن طريق تنفيذ ملف يحتوي على القدرة في مجموعته القابلة للتوريث. .P اعتمادًا على إصدار النواة، تكون مجموعة القدرات المقيدة إما سمة على مستوى النظام، أو سمة لكل عملية. .P \fBمجموعة القدرات المقيدة من لينكس 2.6.25 فصاعدًا\fP .P منذ لينكس 2.6.25، أصبحت \fIمجموعة القدرات المقيدة\fP سمة لكل خيط. (مجموعة القدرات المقيدة على مستوى النظام الموصوفة أدناه لم تعد موجودة). .P تُورث المجموعة المقيدة عند \fBfork\fP(2) من والد الخيط، وتُحفظ عبر \fBexecve\fP(2). .P قد يزيل خيط ما قدرات من مجموعة قدراته المقيدة باستخدام عملية \fBPR_CAPBSET_DROP\fP في \fBprctl\fP(2)، بشرط امتلاكه للقدرة \fBCAP_SETPCAP\fP. وبمجرد إسقاط قدرة من المجموعة المقيدة، لا يمكن استعادتها لتلك المجموعة. يمكن للخيط تحديد ما إذا كانت القدرة في مجموعته المقيدة باستخدام عملية \fBPR_CAPBSET_READ\fP في \fBprctl\fP(2). .P .\" commit b3a222e52e4d4be77cc4520a57af1a4a0d8222d1 إزالة القدرات من المجموعة المقيدة مدعوم فقط إذا كانت قدرات الملفات مجمعة (compiled) داخل النواة. قبل لينكس 2.6.33، كانت قدرات الملفات ميزة اختيارية يمكن ضبطها عبر الخيار \fBCONFIG_SECURITY_FILE_CAPABILITIES\fP. ومنذ لينكس 2.6.33، أُزيل خيار الضبط هذا وأصبحت قدرات الملفات دائمًا جزءًا من النواة. عندما تُجمع قدرات الملفات في النواة، تبدأ عملية \fBinit\fP (سلف جميع العمليات) بمجموعة مقيدة كاملة. وإذا لم تُجمع قدرات الملفات في النواة، فستبدأ \fBinit\fP بمجموعة مقيدة كاملة ناقصة القدرة \fBCAP_SETPCAP\fP، لأن لهذه القدرة معنى مختلفًا عند عدم وجود قدرات ملفات. .P لا يؤدي حذف قدرة من مجموعة التقييد (bounding set) إلى حذفها من مجموعة التوريث الخاصة بالخيط. ومع ذلك، فإنه يمنع إعادة إضافة القدرة إلى مجموعة توريث الخيط في المستقبل. .P \fBمجموعة تقييد القدرات قبل لينكس 2.6.25\fP .P قبل إصدار لينكس 2.6.25، كانت مجموعة تقييد القدرات سمة على مستوى النظام بالكامل تؤثر على جميع الخيوط في النظام. يمكن الوصول إلى مجموعة التقييد عبر الملف \fI/proc/sys/kernel/cap\-bound\fP. (ومما يثير الارتباك، أن معلمة قناع البتات هذه يُعبر عنها برقم عشري موقع في \fI/proc/sys/kernel/cap\-bound\fP.) .P وحده إجراء \fBinit\fP يمكنه ضبط القدرات في مجموعة تقييد القدرات؛ وبخلاف ذلك، لا يمكن للمستخدم الخارق (وبدقة أكثر: إجراء يمتلك قدرة \fBCAP_SYS_MODULE\fP) إلا مسح القدرات من هذه المجموعة. .P في النظام القياسي، تحجب مجموعة تقييد القدرات دائماً قدرة \fBCAP_SETPCAP\fP. ولإزالة هذا القيد (أمر خطر!)، يجب تعديل تعريف \fBCAP_INIT_EFF_SET\fP في \fIinclude/linux/capability.h\fP وإعادة بناء النواة. .P .\" .\" .\" أُضيفت ميزة مجموعة تقييد القدرات على مستوى النظام إلى لينكس 2.2.11. .SS "أثر تغييرات معرف المستخدم على القدرات" للحفاظ على الدلالات التقليدية للانتقالات بين معرف المستخدم 0 وغير الصفر، تجري النواة التغييرات التالية على مجموعات قدرات الخيط عند تغيير معرفات المستخدم الحقيقية، والفعالة، والمحفوظة، ومعرف مستخدم نظام الملفات (باستخدام \fBsetuid\fP(2) أو \fBsetresuid\fP(2) أو ما شابه ذلك): .IP \[bu] 3 إذا كان واحد أو أكثر من معرفات المستخدم الحقيقية أو الفعالة أو المحفوظة قيمته 0 سابقاً، ونتج عن تغييرات المعرف أن أصبحت كل هذه المعرفات بقيمة غير صفرية، فتُمسح جميع القدرات من مجموعات القدرات المسموح بها، والفعالة، والمحيطة. .IP \[bu] إذا غُيّر معرف المستخدم الفعال من 0 إلى قيمة غير صفرية، فتُمسح جميع القدرات من المجموعة الفعالة. .IP \[bu] إذا غُيّر معرف المستخدم الفعال من قيمة غير صفرية إلى 0، فتُنسخ المجموعة المسموح بها إلى المجموعة الفعالة. .IP \[bu] إذا غُيّر معرف مستخدم نظام الملفات من 0 إلى قيمة غير صفرية (انظر \fBsetfsuid\fP(2))، فتُمسح القدرات التالية من المجموعة الفعالة: \fBCAP_CHOWN\fP، و\fBCAP_DAC_OVERRIDE\fP، و\fBCAP_DAC_READ_SEARCH\fP، و\fBCAP_FOWNER\fP، و\fBCAP_FSETID\fP، و\fBCAP_LINUX_IMMUTABLE\fP (منذ لينكس 2.6.30)، و\fBCAP_MAC_OVERRIDE\fP، و\fBCAP_MKNOD\fP (منذ لينكس 2.6.30). وإذا غُيّر معرف مستخدم نظام الملفات من قيمة غير صفرية إلى 0، فإن أيًّا من هذه القدرات المُمكّنة في المجموعة المسموح بها تُمكّن في المجموعة الفعالة. .P .\" إذا أراد خيط يمتلك القيمة 0 لواحد أو أكثر من معرفات مستخدميه منع مسح مجموعة قدراته المسموح بها عند إعادة تعيين جميع معرفاته إلى قيم غير صفرية، فيمكنه فعل ذلك باستخدام علامة securebits المسماة \fBSECBIT_KEEP_CAPS\fP الموضحة أدناه. .SS "ضبط مجموعات القدرات برمجياً" يمكن للخيط استرجاع وتغيير مجموعات قدراته المسموح بها والفعالة والقابلة للتوريث باستخدام استدعاءات النظام \fBcapget\fP(2) و\fBcapset\fP(2). ومع ذلك، يُفضل استخدام \fBcap_get_proc\fP(3) و\fBcap_set_proc\fP(3)، الموفرين في حزمة \fIlibcap\fP، لهذا الغرض. تحكم القواعد التالية التغييرات على مجموعات قدرات الخيط: .IP \[bu] 3 إذا لم يمتلك المستدعِي قدرة \fBCAP_SETPCAP\fP، فيجب أن تكون مجموعة التوريث الجديدة مجموعة جزئية من مزيج مجموعتي التوريث والمسموح بها الموجودتين حالياً. .IP \[bu] (منذ لينكس 2.6.25) يجب أن تكون مجموعة التوريث الجديدة مجموعة جزئية من مزيج مجموعة التوريث الموجودة حالياً ومجموعة تقييد القدرات. .IP \[bu] يجب أن تكون المجموعة المسموح بها الجديدة مجموعة جزئية من المجموعة المسموح بها الموجودة حالياً (أي لا يمكن اكتساب قدرات مسموح بها لا يمتلكها الخيط حالياً). .IP \[bu] يجب أن تكون المجموعة الفعالة الجديدة مجموعة جزئية من المجموعة المسموح بها الجديدة. .SS "علامات securebits: إنشاء بيئة مقتصرة على القدرات" .\" For some background: .\" see http://lwn.net/Articles/280279/ and .\" http://article.gmane.org/gmane.linux.kernel.lsm/5476/ بدءاً من لينكس 2.6.26، ومع نواة مُمكن فيها قدرات الملفات، يطبق لينكس مجموعة من علامات \fIsecurebits\fP لكل خيط يمكن استخدامها لتعطيل المعالجة الخاصة للقدرات لمعرف المستخدم 0 (\fIroot\fP). وهذه العلامات هي: .TP \fBSECBIT_KEEP_CAPS\fP يسمح ضبط هذه العلامة للخيط الذي يمتلك واحداً أو أكثر من معرفات المستخدم 0 بالاحتفاظ بالقدرات في مجموعته المسموح بها عندما يحول جميع معرفاته إلى قيم غير صفرية. وإذا لم تُضبط هذه العلامة، فإن هذا التحويل يؤدي إلى فقدان الخيط لجميع القدرات المسموح بها. تُميَّل هذه العلامة للمسح دائماً عند \fBexecve\fP(2). .IP لاحظ أنه حتى مع ضبط علامة \fBSECBIT_KEEP_CAPS\fP، فإن القدرات الفعالة للخيط تُمسح عندما يحول معرف مستخدمه الفعال إلى قيمة غير صفرية. ومع ذلك، إذا ضبط الخيط هذه العلامة وكان معرفه الفعال غير صفري بالفعل، ثم حول الخيط لاحقاً جميع معرفاته الأخرى إلى قيم غير صفرية، فلن تُمسح القدرات الفعالة. .IP يُتجاهل ضبط علامة \fBSECBIT_KEEP_CAPS\fP إذا كانت علامة \fBSECBIT_NO_SETUID_FIXUP\fP مضبوطة. (توفر العلامة الأخيرة مجموعة فائقة من أثر العلامة الأولى.) .IP توفر هذه العلامة نفس الوظيفة التي كانت توفرها عملية \fBprctl\fP(2) \fBPR_SET_KEEPCAPS\fP القديمة. .TP \fBSECBIT_NO_SETUID_FIXUP\fP يؤدي ضبط هذه العلامة إلى إيقاف النواة عن تعديل مجموعات قدرات الإجراء المسموح بها، والفعالة، والمحيطة عند تبديل معرفات المستخدم الفعالة ومعرفات نظام الملفات بين قيم صفرية وغير صفرية. انظر \fIأثر تغييرات معرف المستخدم على القدرات\fP أعلاه. .TP \fBSECBIT_NOROOT\fP إذا ضُبطت هذه البتة، فإن النواة لا تمنح قدرات عند تنفيذ برنامج set\-user\-ID\-root، أو عندما يستدعي إجراء يمتلك معرف مستخدم فعال أو حقيقي قيمته 0 الدالة \fBexecve\fP(2). (انظر \fIالقدرات وتنفيذ البرامج من قبل root\fP أعلاه.) .TP \fBSECBIT_NO_CAP_AMBIENT_RAISE\fP يؤدي ضبط هذه العلامة إلى منع رفع القدرات المحيطة عبر عملية \fBprctl\fP(2) \fBPR_CAP_AMBIENT_RAISE\fP. .P تمتلك كل علامة "أساسية" من العلامات أعلاه علامة "مغلقة" (locked) مرافقة لها. وضبط أي من العلامات "المغلقة" لا يمكن الرجوع عنه، وله أثر يتمثل في منع إجراء المزيد من التغييرات على العلامة "الأساسية" المقابلة. العلامات المغلقة هي: \fBSECBIT_KEEP_CAPS_LOCKED\fP، و\fBSECBIT_NO_SETUID_FIXUP_LOCKED\fP، و\fBSECBIT_NOROOT_LOCKED\fP، و\fBSECBIT_NO_CAP_AMBIENT_RAISE_LOCKED\fP. .P يمكن تعديل واسترجاع علامات \fIsecurebits\fP باستخدام عمليتي \fBprctl\fP(2) \fBPR_SET_SECUREBITS\fP و\fBPR_GET_SECUREBITS\fP. وتُطلب قدرة \fBCAP_SETPCAP\fP لتعديل العلامات. لاحظ أن ثوابت \fBSECBIT_*\fP لا تتوفر إلا بعد تضمين ملف الترويسة \fI\fP. .P تُورث علامات \fIsecurebits\fP بواسطة الإجراءات الابنة. وأثناء \fBexecve\fP(2)، يُحتفظ بجميع العلامات، باستثناء \fBSECBIT_KEEP_CAPS\fP التي تُمسح دائماً. .P يمكن للتطبيق استخدام الاستدعاء التالي ليغلق على نفسه، وعلى جميع المتحدرين منه، في بيئة تكون فيها الطريقة الوحيدة لاكتساب القدرات هي تنفيذ برنامج يمتلك قدرات ملفات مرتبطة به: .P .in +4n .EX prctl(PR_SET_SECUREBITS, /* إيقاف SECBIT_KEEP_CAPS */ SECBIT_KEEP_CAPS_LOCKED | SECBIT_NO_SETUID_FIXUP | SECBIT_NO_SETUID_FIXUP_LOCKED | SECBIT_NOROOT | SECBIT_NOROOT_LOCKED); /* ضبط/إغلاق SECBIT_NO_CAP_AMBIENT_RAISE ليس مطلوباً */ .EE .in .\" .\" .SS "برامج \(dqset\-user\-ID\-root\(dq لكل فضاء اسم مستخدم" إن برنامج set\-user\-ID الذي يطابق معرف مستخدمه المعرف الذي أنشأ فضاء اسم مستخدم سيمنح قدرات في مجموعتي الإجراء المسموح بها والفعالة عند تنفيذه بواسطة أي إجراء داخل فضاء الاسم ذلك أو أي فضاء اسم مستخدم متحدر منه. .P .\" .\" القواعد المتعلقة بتحويل قدرات الإجراء أثناء \fBexecve\fP(2) هي تماماً كما وُصفت في \fIتحويل القدرات أثناء execve()\fP و \fIالقدرات وتنفيذ البرامج من قبل root\fP أعلاه، مع اختلاف أن "root" في القسم الفرعي الأخير هو معرف المستخدم لمنشئ فضاء اسم المستخدم. .SS "قدرات الملفات ضمن فضاء الاسم" .\" commit 8db6c34f1dbc8e06aa016a9b829b06902c3e1340 تربط قدرات الملفات التقليدية (أي الإصدار 2) فقط مجموعة من أقنعة القدرات بالملف التنفيذي الثنائي. وعندما ينفذ إجراء ما ملفاً ثنائياً بهذه القدرات، فإنه يكتسب القدرات المرتبطة (ضمن فضاء اسم المستخدم الخاص به) وفقاً للقواعد الموضحة في \fIتحويل القدرات أثناء execve()\fP أعلاه. .P نظراً لأن قدرات الملفات من الإصدار 2 تمنح قدرات للإجراء المنفذ بغض النظر عن فضاء اسم المستخدم الذي يتواجد فيه، فإنه يُسمح فقط للإجراءات ذات الامتيازات بربط القدرات بملف. وكلمة "ذات امتيازات" هنا تعني إجراء يمتلك قدرة \fBCAP_SETFCAP\fP في فضاء اسم المستخدم حيث وُصل نظام الملفات (عادة فضاء اسم المستخدم الأولي). هذا القيد يجعل قدرات الملفات عديمة الفائدة لبعض حالات الاستخدام. فعلى سبيل المثال، في الحاويات ذات فضاء اسم المستخدم، قد يكون من المرغوب فيه القدرة على إنشاء ملف ثنائي يمنح قدرات فقط للإجراءات المنفذة داخل تلك الحاوية، وليس للإجراءات التي تُنفذ خارج الحاوية. .P أضاف لينكس 4.14 ما يسمى بقدرات الملفات ضمن فضاء الاسم لدعم حالات الاستخدام هذه. تُسجل قدرات الملفات ضمن فضاء الاسم كسمات موسعة \fIsecurity.capability\fP من الإصدار 3 (أي \fBVFS_CAP_REVISION_3\fP). تُنشأ هذه السمة آلياً في الظروف الموضحة في \fIإصدارات السمات الموسعة لقدرات الملفات\fP أعلاه. وعندما تُنشأ سمة موسعة \fIsecurity.capability\fP من الإصدار 3، تسجل النواة في السمة الموسعة ليس فقط أقنعة القدرات، ولكن أيضاً معرف مستخدم الجذر لفضاء الاسم. .P .\" .\" كما هو الحال مع الملف الثنائي الذي يمتلك قدرات ملفات \fBVFS_CAP_REVISION_2\fP، فإن الملف الثنائي الذي يمتلك قدرات \fBVFS_CAP_REVISION_3\fP يمنح قدرات للإجراء أثناء \fBexecve\fP(). ومع ذلك، لا تمنح القدرات إلا إذا نُفذ الملف الثنائي بواسطة إجراء يتواجد في فضاء اسم مستخدم تُرسم فيه القيمة 0 لمعرف المستخدم إلى معرف مستخدم الجذر المحفوظ في السمة الموسعة، أو عند تنفيذه بواسطة إجراء يتواجد في فضاء اسم متحدر من فضاء اسم كهذا. .SS "التفاعل مع فضاءات أسماء المستخدمين" لمزيد من المعلومات حول التفاعل بين القدرات وفضاءات أسماء المستخدمين، انظر \fBuser_namespaces\fP(7). .SH المعايير لا توجد معايير تحكم القدرات، ولكن تطبيق قدرات لينكس يعتمد على مسودة معيار POSIX.1e المسحوبة .UR https:\://archive.org\:/details\:/posix_1003.1e\-990310 .UE . .SH ملاحظات عند محاولة استخدام \fBstrace\fP(1) على ملفات ثنائية تمتلك قدرات (أو ملفات ثنائية من نوع set\-user\-ID\-root)، قد تجد الخيار \fI\-u \fP مفيداً. مثل هذا: .P .in +4n .EX $\fB sudo strace \-o trace.log \-u ceci ./myprivprog\fP .EE .in .P .\" commit 5915eb53861c5776cfec33ca4fcc1fd20d66dd27 removed .\" CONFIG_SECURITY_CAPABILITIES من إصدار لينكس 2.5.27 إلى لينكس 2.6.26، كانت القدرات مكوناً اختيارياً للنواة، وكان يمكن تمكينها/تعطيلها عبر خيار ضبط النواة \fBCONFIG_SECURITY_CAPABILITIES\fP. .P .\" 7b9a7ec565505699f503b4fcf61500dceb36e744 يمكن استخدام الملف \fI/proc/\fPpid\fI/task/TID/status\fP لعرض مجموعات قدرات خيط ما. ويظهر الملف \fI/proc/\fPpid\fI/status\fP مجموعات قدرات الخيط الرئيس للإجراء. قبل لينكس 3.8، كانت القدرات غير الموجودة تظهر على أنها مُمكّنة (1) في هذه المجموعات. ومنذ لينكس 3.8، تظهر جميع القدرات غير الموجودة (فوق \fBCAP_LAST_CAP\fP) على أنها معطلة (0). .P توفر حزمة \fIlibcap\fP مجموعة من الروتينات لضبط وجلب القدرات، وهي أكثر راحة وأقل عرضة للتغيير من الواجهة التي يوفرها \fBcapset\fP(2) و\fBcapget\fP(2). توفر هذه الحزمة أيضاً برامج \fBsetcap\fP(8) و\fBgetcap\fP(8). يمكن العثور عليها في .br .UR https:\://git.kernel.org\:/pub\:/scm\:/libs\:/libcap\:/libcap.git\:/refs/ .UE . .P قبل لينكس 2.6.24، ومن لينكس 2.6.24 إلى لينكس 2.6.32 إذا لم تكن قدرات الملفات مُمكّنة، كان بإمكان خيط يمتلك قدرة \fBCAP_SETPCAP\fP التلاعب بقدرات خيوط أخرى غير نفسه. ومع ذلك، هذا ممكن من الناحية النظرية فقط، لأنه لا يوجد خيط يمتلك \fBCAP_SETPCAP\fP في أي من هاتين الحالتين: .IP \[bu] 3 في التطبيق ما قبل الإصدار 2.6.25، كانت مجموعة تقييد القدرات على مستوى النظام، \fI/proc/sys/kernel/cap\-bound\fP، تحجب دائماً قدرة \fBCAP_SETPCAP\fP، ولا يمكن تغيير ذلك دون تعديل مصدر النواة وإعادة بنائها. .IP \[bu] إذا كانت قدرات الملفات معطلة (أي أن خيار النواة \fBCONFIG_SECURITY_FILE_CAPABILITIES\fP معطل)، فإن \fBinit\fP يبدأ بقدة \fBCAP_SETPCAP\fP محذوفة من مجموعة التقييد الخاصة به لكل إجراء، وتُورث مجموعة التقييد هذه من قبل جميع الإجراءات الأخرى المنشأة في النظام. .SH "انظر أيضًا" .\" from libcap-ng .\" from libcap-ng .\" from libcap-ng .\" from libcap-ng \fBcapsh\fP(1)، و\fBsetpriv\fP(1)، و\fBprctl\fP(2)، و\fBsetfsuid\fP(2)، و\fBcap_clear\fP(3)، و\fBcap_copy_ext\fP(3)، و\fBcap_from_text\fP(3)، و\fBcap_get_file\fP(3)، و\fBcap_get_proc\fP(3)، و\fBcap_init\fP(3)، و\fBcapgetp\fP(3)، و\fBcapsetp\fP(3)، و\fBlibcap\fP(3)، و\fBproc\fP(5)، و\fBcredentials\fP(7)، و\fBpthreads\fP(7)، و\fBuser_namespaces\fP(7)، و\fBcaptest\fP(8)، و\fBfilecap\fP(8)، و\fBgetcap\fP(8)، و\fBgetpcaps\fP(8)، و\fBnetcap\fP(8)، و\fBpscap\fP(8)، و\fBsetcap\fP(8) .P \fIinclude/linux/capability.h\fP في شجرة مصدر نواة لينكس .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .