landlock_add_rule(2) System Calls Manual landlock_add_rule(2)

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

Biblioteca C standard (libc, -lc)

#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);

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:

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.
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.

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

landlock_add_rule() poate eșua din următoarele motive:

rule_type este LANDLOCK_RULE_NET_PORT, dar TCP nu este acceptat de nucleul care rulează.
Landlock este acceptat de nucleu, dar este dezactivat la pornire.
fanioane(flags) nu este 0.
Accesele la reguli sunt inconsecvente (de exemplu, rule_attr->allowed_access nu este un subset al acceselor gestionate de setul de reguli).
Î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).
În struct landlock_net_port_attr, numărul portului este mai mare de 65535.
Accese goale (adică, rule_attr->allowed_access este 0).
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 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.
ruleset_fd nu are acces de scriere la setul de reguli de bază.
rule_attr nu a fost o adresă validă.

Linux.

Linux 5.13.

A se vedea landlock(7).

landlock_create_ruleset(2), landlock_restrict_self(2), landlock(7)

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 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.

21 august 2024 Pagini de manual de Linux 6.12