Scroll to navigation

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 التالية:

لهذه القواعد، الكائن هو تسلسل هرمي للملفات، وتُعرف إجراءات نظام الملفات المتعلقة به بـ حقوق الوصول إلى نظام الملفات.
في هذه الحالة، يشير 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، والذي يحدد الدليل الأب للتسلسل الهرمي للملفات أو مجرد ملف.
لهذه القواعد، الكائن هو منفذ 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() 0. عند الخطأ، تُرجع -1 ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

يمكن أن تفشل landlock_add_rule() للأسباب التالية:

rule_type هو LANDLOCK_RULE_NET_PORT، لكن TCP غير مدعوم من قبل النواة الجارية.
ruleset_fd ليس واصف ملف للخيط الحالي، أو أن أحد أعضاء rule_attr ليس واصف ملف كما هو متوقع.
ruleset_fd ليس واصف ملف مجموعة قواعد، أو أن أحد أعضاء rule_attr ليس من نوع واصف الملف المتوقع.
rule_attr لم يكن عنواناً صالحاً.
flags ليست 0.
وصولات القاعدة غير متسقة (أي أن rule_attr->allowed_access ليس مجموعة فرعية من الوصولات التي تعالجها مجموعة القواعد).
في struct landlock_path_beneath_attr، وصولات القاعدة غير قابلة للتطبيق على الملف (أي أن بعض حقوق الوصول في rule_attr->allowed_access تنطبق فقط على الدلائل، لكن rule_attr->parent_fd لا يشير إلى دليل).
في struct landlock_net_port_attr، رقم المنفذ أكبر من 65535.
وصولات فارغة (أي أن rule_attr->allowed_access هو 0).
نواة الحاسوب تدعم Landlock لكنه عُطّل في وقت الإقلاع.
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.

6 أبريل 2026 صفحات دليل لينكس (لم تصدر بعد)