为什么seccomp进程总会被杀死?

时间:2012-04-11 22:00:06

标签: c linux seccomp

为什么进入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

1 个答案:

答案 0 :(得分:4)

在手册页的PR_SET_SECCOMP下,唯一允许的系统调用是read,write,exit和sigreturn。

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

(你可以看看这个过程......)