Skip to main content

landlock_create_ruleset_with_net

Function landlock_create_ruleset_with_net 

Source
pub fn landlock_create_ruleset_with_net(
    handled_fs: LandlockAccessFs,
    handled_net: LandlockAccessNet,
) -> Result<LandlockRuleset, Errno>
Expand description

Crée un ruleset Landlock gérant les fichiers ET le réseau (ABI v4+).

§Pourquoi une fonction distincte de landlock_create_ruleset

Le noyau lit exactement size octets d’attributs. Passer la structure à deux champs à un noyau qui n’en connaît qu’un échoue E2BIG — et la pose de cage étant fail-closed, cet échec tuerait le processus sur un noyau parfaitement valide.

Garder les deux formes permet à l’appelant de choisir en connaissance de cause, après avoir interrogé landlock_supported_abi, plutôt que de dégrader en silence. C’est le même raisonnement qui a fait borner air-sandbox à l’ABI v1 : demander au noyau ce qu’il ne connaît pas n’est pas une dégradation, c’est une mort.

§Errors

  • EINVAL : un bit de handled_fs ou handled_net est inconnu de l’ABI courante ;
  • E2BIG : le noyau ne connaît pas la forme à deux champs (ABI < v4) ;
  • ENOMEM, ENOSYS : comme landlock_create_ruleset.

§Examples

use air_sys_syscall::security::{landlock_create_ruleset_with_net, landlock_supported_abi};
use air_sys_types::security::{LandlockAccessFs, LandlockAccessNet};

// Le réseau n'existe qu'à partir de l'ABI v4 : on demande avant de composer.
if landlock_supported_abi().unwrap_or(0) >= 4 {
    let ruleset = landlock_create_ruleset_with_net(
        LandlockAccessFs::READ_FILE,
        LandlockAccessNet::CONNECT_TCP,
    )
    .expect("create_ruleset avec réseau");
    let _ = ruleset;
}