pub fn landlock_create_ruleset_with_scope(
handled_fs: LandlockAccessFs,
handled_net: LandlockAccessNet,
scope: LandlockScope,
) -> Result<LandlockRuleset, Errno>Expand description
Crée un ruleset Landlock gérant fichiers, réseau ET portées (ABI v6+).
§Ce que la portée ajoute, et que les deux autres ne pouvaient pas dire
handled_fs et handled_net bornent ce qu’on a le droit de faire sur une ressource
nommée. scoped borne autre chose : jusqu’où le domaine peut atteindre en dehors de
lui-même. Un socket UNIX abstrait n’a pas de chemin et un signal ne traverse aucun
descripteur — ni l’un ni l’autre ne pouvait donc être borné par une règle.
§Pourquoi une fonction de plus
Même raison qu’entre landlock_create_ruleset et landlock_create_ruleset_with_net :
le noyau lit exactement size octets. Sonder landlock_supported_abi avant de choisir
la forme est le seul moyen de ne pas mourir sur un noyau plus ancien.
§Errors
EINVAL: un bit dehandled_fs,handled_netouscopeest inconnu de l’ABI courante ;E2BIG: le noyau ne connaît pas la forme à trois champs (ABI < v6) ;ENOMEM,ENOSYS: commelandlock_create_ruleset.
§Examples
use air_sys_syscall::security::{landlock_create_ruleset_with_scope, landlock_supported_abi};
use air_sys_types::security::{LandlockAccessFs, LandlockAccessNet, LandlockScope};
// Les portées n'existent qu'à partir de l'ABI v6 : on demande avant de composer.
if landlock_supported_abi().unwrap_or(0) >= 6 {
let ruleset = landlock_create_ruleset_with_scope(
LandlockAccessFs::READ_FILE,
LandlockAccessNet::CONNECT_TCP,
LandlockScope::ABSTRACT_UNIX_SOCKET | LandlockScope::SIGNAL,
)
.expect("create_ruleset avec portées");
let _ = ruleset;
}