3

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
4

1 に答える 1

5

man ページの PR_SET_SECCOMP では、許可されているシステム コールは read、write、exit、および sigreturn のみです。

標準ライブラリ (最近の Linux) で exit(0) を呼び出すときは、exit ではなく、exit_group システム コールを呼び出します。これは許可されていないため、SIGKILL が発生します。

(これは、プロセスをトレースするとわかります...)

于 2012-04-11T22:17:14.080 に答える