landlock_add_rule(2)

NUME
landlock_add_rule - adaugă o nouă regulă Landlock la un set de reguli

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <linux/landlock.h>  /* Definirea constantelor LANDLOCK_* */
#include <sys/syscall.h>     /* Definirea constantelor SYS_* */

int syscall(SYS_landlock_add_rule, int ruleset_fd,
            enum landlock_rule_type rule_type,
            const void *rule_attr, uint32_t fanioane);

DESCRIERE
O regulă Landlock descrie o acțiune asupra unui obiect pe care procesul intenționează să o efectueze. Un set de reguli este agregat într-un set de reguli, care poate apoi restricționa firul care îl aplică și viitorii săi copii.

Apelul de sistem landlock_add_rule() adaugă o nouă regulă Landlock la un set de reguli existent. Consultați landlock(7) pentru o prezentare generală.

ruleset_fd este un descriptor de fișier de set de reguli Landlock obținut cu landlock_create_ruleset(2).

rule_type identifică tipul de structură indicat de rule_attr. În prezent, Linux acceptă următoarele valori rule_type:

LANDLOCK_RULE_PATH_BENEATH
    Pentru aceste reguli, obiectul este o ierarhie de fișiere, iar acțiunile aferente sistemului de fișiere sunt definite cu drepturi de acces la sistemul de fișiere.

    În acest caz, rule_attr indică următoarea structură:

        struct landlock_path_beneath_attr {
            __u64 allowed_access;
            __s32 parent_fd;
        } __attribute__((packed));

    allowed_access conține o mască de biți a acțiunilor sistemului de fișiere permise, care pot fi aplicate asupra parent_fd specificat (a se vedea Acțiuni ale sistemului de fișiere în landlock(7)).

    parent_fd este un descriptor de fișier deschis, de preferință cu indicatorul O_PATH, care identifică directorul părinte al ierarhiei de fișiere sau doar un fișier.

LANDLOCK_RULE_NET_PORT
    Pentru aceste reguli, obiectul este un port TCP, iar acțiunile aferente sunt definite cu drepturi de acces la rețea.

    În acest caz, rule_attr indică următoarea structură:

        struct landlock_net_port_attr {
            __u64 allowed_access;
            __u64 port;
        };

    allowed_access conține o mască de biți a acțiunilor de rețea permise, care pot fi aplicate pe portul dat.

    port este portul de rețea în ordinea de octeți „endianness” a gazdei.

    Trebuie remarcat faptul că portul 0 transmis către bind(2) se va lega la un port disponibil din gama de porturi efemere. Acesta poate fi configurat în sysctl /proc/sys/net/ipv4/ip_local_port_range (utilizat și pentru IPv6).

    O regulă Landlock cu portul 0 și dreptul LANDLOCK_ACCESS_NET_BIND_TCP înseamnă că solicitarea de conectare pe portul 0 este permisă și se va traduce automat în conectare pe intervalul de porturi aferent.

fanioane trebuie să fie 0.

VALOAREA RETURNATĂ
În caz de succes, landlock_add_rule() returnează 0. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE
landlock_add_rule() poate eșua din următoarele motive:

EAFNOSUPPORT
    rule_type este LANDLOCK_RULE_NET_PORT, dar TCP nu este acceptat de nucleul care rulează.

EOPNOTSUPP
    Landlock este acceptat de nucleu, dar este dezactivat la pornire.

EINVAL
    fanioane(flags) nu este 0.

EINVAL
    Accesele la reguli sunt inconsecvente (de exemplu, rule_attr->allowed_access nu este un subset al acceselor gestionate de setul de reguli).

EINVAL
    În struct landlock_path_beneath_attr, accesele la reguli nu se aplică fișierului (de exemplu, unele drepturi de acces din rule_attr->allowed_access se aplică numai directoarelor, dar rule_attr->parent_fd nu se referă la un director).

EINVAL
    În struct landlock_net_port_attr, numărul portului este mai mare de 65535.

ENOMSG
    Accese goale (adică, rule_attr->allowed_access este 0).

EBADF
    ruleset_fd nu este un descriptor de fișier pentru firul curent sau un membru al rule_attr nu este un descriptor de fișier, așa cum era de așteptat.

EBADFD
    ruleset_fd nu este un descriptor de fișier pentru firul curent sau un membru al rule_attr nu este un descriptor de fișier, așa cum era de așteptat.ruleset_fd nu este un descriptor de fișier de set de reguli sau un membru al rule_attr nu este tipul de descriptor de fișier așteptat.

EPERM
    ruleset_fd nu are acces de scriere la setul de reguli de bază.

EFAULT
    rule_attr nu a fost o adresă validă.

STANDARDE
Linux.

ISTORIC
Linux 5.13.

EXEMPLE
A se vedea landlock(7).

CONSULTAȚI ȘI
landlock_create_ruleset(2), landlock_restrict_self(2), landlock(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.