是否可以在 seccomp 过滤器中获取当前 PID?

Is it possible to get the current PID in a seccomp filter?

当通过 SECCOMP_RET_USER_NOTIF 使用 seccomp 用户空间通知 (https://www.kernel.org/doc/html/latest/userspace-api/seccomp_filter.html) 时,我发现 PID 作为 seccomp_notif 结构的一部分对于某些过滤决策非常有用。 在 ebpf 过滤器中,辅助函数,如 bpf_get_current_pid_tgid(),可用于获取此类信息。但是由于 seccomp 似乎只支持经典的 BPF,我想知道是否还有其他方法。 据我所知,在 seccomp 过滤器内部只能访问 seccomp_data 结构。 有没有办法直接获取 seccomp 过滤器中的 PID 等特定信息?

不,您无法从 seccomp 过滤器本身获取该信息,除非它是系统调用参数的一部分。要检索 PID,您必须例如将控制权交给用户空间 ptracer 进程或依赖 SECCOMP_RET_USER_NOTIF 如您所述。