2个版本
0.1.1 | 2020年10月5日 |
---|---|
0.1.0 | 2020年10月5日 |
#794 in Unix APIs
每月下载 21 次
用于 bandsocks-sand
16KB
189 行代码
小型Seccomp
有时你需要一个不包含整个动态库的系统调用过滤器。或者 std。或者分配器。随便!只要在缓冲区中扔一些指令,我们就能做到。
它只是不使用libseccomp的基本seccomp功能。到目前为止只在x86_64
上测试/工作。
目前需要nightly rust,因为sc
系统调用crate使用了内联汇编。
包含的示例不使用Rust标准库、分配器或任何libc。目前以发布模式编译为36 kB。
lib.rs
:
小型Seccomp
有时你需要一个不包含整个动态库的系统调用过滤器。或者 std。或者分配器。随便!只要在缓冲区中扔一些指令,我们就能做到。
此crate不包含任何类型的优化器或编译器用于构建BPF过滤器,但它有一些基本语法,可以以大部分无痛的方式手动构建它们,无需任何分配。
如果您喜欢,可以使用此crate的较低级别的组件,但最容易开始的方式是将指令或指令块添加到seccomp_tiny::ProgramBuffer,然后调用其方法seccomp_tiny::ProgramBuffer::activate()来永久应用过滤器并在失败时panic。
use std;
use seccomp_tiny::{ProgramBuffer, bpf, abi};
let mut p = ProgramBuffer::new();
p.inst( bpf::ret( abi::SECCOMP_RET_ALLOW ) );
p.activate()
依赖项
~240KB