为什么一个过程的Seccomp总是被杀?(Why does a seccomp process al

2019-09-16 12:14发布

为什么一个进程已进入模式的Seccomp始终得到退出被杀?

$ cat simple.c 
#include <stdio.h>
#include <stdlib.h>
#include <linux/prctl.h>

int main( int argc, char **argv )
{
    printf("Starting\n");
    prctl(PR_SET_SECCOMP, 1);
    printf("Running\n");
    exit(0);
}
$ cc -o simple simple.c
$ ./simple || echo "Returned $?"
Starting
Running
Killed
Returned 137

Answer 1:

从手册页,PR_SET_SECCOMP下,只允许系统调用读,写,退出,sigreturn。

当你调用标准库出口(0)(在最近的Linux),你叫exit_group系统调用,而不是退出。 这是不允许的,所以你得到一个SIGKILL。

(你可以看到这一点,如果你与strace的进程......)



文章来源: Why does a seccomp process always get killed?
标签: c linux seccomp