将 seccomp_export_bpf 生成的代码加载到内核中
load seccomp_export_bpf generated code into the kernel
http://man7.org/linux/man-pages/man3/seccomp_export_bpf.3.html 如何将生成的代码加载到内核中?此功能有哪些可能的用例?
How can I load the generated code into kernel?
如果您正在使用 seccomp_export_bpf(const scmp_filter_ctx ctx, int fd)
,那么您已经有一个已初始化的 scmp_filter_ctx
对象 ctx
,在这种情况下,您可以简单地执行以下操作:
int rc = seccomp_load(ctx);
不需要使用seccomp_export_bpf
在内核中加载过滤器。
Which are possible use cases for this function?
我猜想 seccomp_export_bpf
在您想在磁盘上保留过滤器副本以备将来使用时最有用。例如,您可以这样做 (from the man page example):
filter_fd = open("/tmp/seccomp_filter.bpf", O_WRONLY);
if (filter_fd == -1) {
rc = -errno;
goto out;
}
rc = seccomp_export_bpf(ctx, filter_fd);
然后要在内核中加载导出的过滤器,您可以这样做:
char filter[4096];
int length = read(0, filter, 4096);
if (length < 0) {
goto out;
}
struct sock_fprog bpf_prog = {
.len = length / sizeof(struct sock_filter),
.filter = filter,
};
rc = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &bpf_prog);
http://man7.org/linux/man-pages/man3/seccomp_export_bpf.3.html 如何将生成的代码加载到内核中?此功能有哪些可能的用例?
How can I load the generated code into kernel?
如果您正在使用 seccomp_export_bpf(const scmp_filter_ctx ctx, int fd)
,那么您已经有一个已初始化的 scmp_filter_ctx
对象 ctx
,在这种情况下,您可以简单地执行以下操作:
int rc = seccomp_load(ctx);
不需要使用seccomp_export_bpf
在内核中加载过滤器。
Which are possible use cases for this function?
我猜想 seccomp_export_bpf
在您想在磁盘上保留过滤器副本以备将来使用时最有用。例如,您可以这样做 (from the man page example):
filter_fd = open("/tmp/seccomp_filter.bpf", O_WRONLY);
if (filter_fd == -1) {
rc = -errno;
goto out;
}
rc = seccomp_export_bpf(ctx, filter_fd);
然后要在内核中加载导出的过滤器,您可以这样做:
char filter[4096];
int length = read(0, filter, 4096);
if (length < 0) {
goto out;
}
struct sock_fprog bpf_prog = {
.len = length / sizeof(struct sock_filter),
.filter = filter,
};
rc = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &bpf_prog);