- trixie-backports 4.31.0-1~bpo13+1
- testing 4.31.0-1
- unstable 4.32.4-1
| landlock_add_rule(2) | System Calls Manual | landlock_add_rule(2) |
الاسم¶
landlock_add_rule - إضافة قاعدة Landlock جديدة إلى مجموعة قواعد
المكتبة¶
مكتبة سي المعيارية (libc، -lc)
موجز¶
#include <linux/landlock.h> /* تعريف ثوابت LANDLOCK_* */ #include <sys/syscall.h> /* تعريف ثوابت SYS_* */
int syscall(SYS_landlock_add_rule, int ruleset_fd,
enum landlock_rule_type rule_type,
const void *rule_attr, uint32_t flags);
الوصف¶
تصف قاعدة Landlock إجراءً على كائن تعتزم العملية تنفيذه. تُجمَّع مجموعة من القواعد في "مجموعة قواعد" (ruleset)، والتي يمكنها بعد ذلك تقييد الخيط (thread) الذي يفرضها، وأبناءه المستقبليين.
استدعاء النظام landlock_add_rule() يضيف قاعدة Landlock جديدة إلى مجموعة قواعد موجودة. راجع landlock(7) للحصول على نظرة عامة.
ruleset_fd هو واصف ملف مجموعة قواعد Landlock تم الحصول عليه باستخدام landlock_create_ruleset(2).
rule_type يحدد نوع البنية المشار إليها بواسطة rule_attr. حالياً، يدعم لينكس قيم rule_type التالية:
- LANDLOCK_RULE_PATH_BENEATH
- لهذه القواعد، الكائن هو تسلسل هرمي للملفات، وتُعرف إجراءات نظام الملفات المتعلقة به بـ حقوق الوصول إلى نظام الملفات.
- في هذه الحالة، يشير rule_attr إلى البنية التالية:
-
struct landlock_path_beneath_attr {
__u64 allowed_access;
__s32 parent_fd; } __attribute__((packed));
- allowed_access يحتوي على قناع بت للإجراءات المسموح بها في نظام الملفات، والتي يمكن تطبيقها على parent_fd المعطى (انظر إجراءات نظام الملفات في landlock(7)).
- parent_fd هو واصف ملف مفتوح، ويفضل أن يكون مع العلم O_PATH، والذي يحدد الدليل الأب للتسلسل الهرمي للملفات أو مجرد ملف.
- LANDLOCK_RULE_NET_PORT (منذ إصدار ABI Landlock 4)
- لهذه القواعد، الكائن هو منفذ TCP، وتُعرف الإجراءات المتعلقة به بـ حقوق الوصول إلى الشبكة.
- في هذه الحالة، يشير rule_attr إلى البنية التالية:
-
struct landlock_net_port_attr {
__u64 allowed_access;
__u64 port; };
- allowed_access يحتوي على قناع بت للإجراءات الشبكية المسموح بها، والتي يمكن تطبيقها على المنفذ المعطى.
- port هو منفذ الشبكة بترتيب البايت الخاص بالمضيف.
- تجدر الإشارة إلى أن المنفذ 0 المُمرر إلى bind(2) سيرتبط بمنفذ متاح من نطاق المنافذ المؤقتة. يمكن تكوين هذا في sysctl /proc/sys/net/ipv4/ip_local_port_range (يُستخدم أيضًا لـ IPv6).
- قاعدة Landlock مع المنفذ 0 والحق LANDLOCK_ACCESS_NET_BIND_TCP تعني أن طلب الارتباط على المنفذ 0 مسموح به وسيترجم آلياً إلى الارتباط بنطاق المنافذ ذي الصلة.
flags قناع بتات للأعلام الاختيارية التالية:
- LANDLOCK_ADD_RULE_QUIET (منذ إصدار Landlock ABI رقم 10)
- مع حقول quiet_* في struct landlock_ruleset_attr، يتحكم هذا العلم في ما إذا كانت Landlock ستسجل رسائل التدقيق عندما ترفض هذه الطبقة الوصول إلى الكائنات التي تغطيها هذه القاعدة.
- إذا كان التسجيل ممكّنًا، فعندما ترفض Landlock وصولًا، ستكتم السجل إذا تحققت جميع الشروط التالية:
- •
- هذه الطبقة هي الطبقة الداخلية التي رفضت الوصول؛
- •
- جميع حالات الوصول التي رفضتها هذه الطبقة جزء من حقول quiet_* في struct landlock_ruleset_attr ذي الصلة؛
- •
- الكائن (أو أحد آبائه، لقواعد نظام الملفات) موسوم بأنه "هادئ" عبر LANDLOCK_ADD_RULE_QUIET.
- لأن الطبقة لا تكتم التسجيل إلا إذا رفضت الوصول، لا يمكن لبرنامج معزول استخدام هذا العلم "لإخفاء" حالات رفض الوصول دون أن يرفض لنفسه الوصول أولًا.
- لا يعتمد تأثير هذا العلم على قيمة allowed_access في rule_attr الممرر. عند وجود هذا العلم، يُسمح للمستدعي أيضًا بتمرير allowed_access فارغ.
قيمة الإرجاع¶
عند النجاح، تُرجع landlock_add_rule() 0. عند الخطأ، تُرجع -1 ويُضبط errno للإشارة إلى الخطأ.
الأخطاء¶
يمكن أن تفشل landlock_add_rule() للأسباب التالية:
- EAFNOSUPPORT
- rule_type هو LANDLOCK_RULE_NET_PORT، لكن TCP غير مدعوم من قبل النواة الجارية.
- EBADF
- ruleset_fd ليس واصف ملف للخيط الحالي، أو أن أحد أعضاء rule_attr ليس واصف ملف كما هو متوقع.
- EBADFD
- ruleset_fd ليس واصف ملف مجموعة قواعد، أو أن أحد أعضاء rule_attr ليس من نوع واصف الملف المتوقع.
- EFAULT
- rule_attr لم يكن عنواناً صالحاً.
- EINVAL
- flags غير صالح.
- EINVAL
- وصولات القاعدة غير متسقة (أي أن rule_attr->allowed_access ليس مجموعة فرعية من الوصولات التي تعالجها مجموعة القواعد).
- EINVAL
- في struct landlock_path_beneath_attr، وصولات القاعدة غير قابلة للتطبيق على الملف (أي أن بعض حقوق الوصول في rule_attr->allowed_access تنطبق فقط على الدلائل، لكن rule_attr->parent_fd لا يشير إلى دليل).
- EINVAL
- في struct landlock_net_port_attr، رقم المنفذ أكبر من 65535.
- EINVAL
- يُمرر LANDLOCK_ADD_RULE_QUIET لكن مجموعة القواعد ليس بها بتات وصول هادئة مضبوطة لنوع القاعدة المقابل.
- ENOMSG
- وصولات فارغة (أي rule_attr->allowed_access يساوي 0) وبدون أعلام.
- EOPNOTSUPP
- نواة الحاسوب تدعم Landlock لكنه عُطّل في وقت الإقلاع.
- EPERM
- ruleset_fd ليس لديه صلاحية كتابة لمجموعة القواعد الأساسية.
المعايير¶
لينكس.
التاريخ¶
لينكس 5.13.
أمثلة¶
انظر landlock(7).
انظر أيضًا¶
landlock_create_ruleset(2), landlock_restrict_self(2), landlock(7)
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 11 سبتمبر 2026 | صفحات دليل لينكس 6.20 |