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
    لهذه القواعد، الكائن هو منفذ 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() للأسباب التالية:

EAFNOSUPPORT
    rule_type هو LANDLOCK_RULE_NET_PORT، لكن TCP غير مدعوم من قبل النواة الجارية.

EBADF
    ruleset_fd ليس واصف ملف للخيط الحالي، أو أن أحد أعضاء rule_attr ليس واصف ملف كما هو متوقع.

EBADFD
    ruleset_fd ليس واصف ملف مجموعة قواعد، أو أن أحد أعضاء rule_attr ليس من نوع واصف الملف المتوقع.

EFAULT
    rule_attr لم يكن عنواناً صالحاً.

EINVAL
    flags ليست 0.

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.

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 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.