我怎么从一个setcap可执行文件获取一个coredump?

为了防止特权数据的转义,Linux上的setcap可执行文件不会转储内核:

ijw@build$ cat > test.c main() { abort(); } ijw@build$ gcc test.c test.c: In function 'main': test.c:1: warning: incompatible implicit declaration of built-in function 'abort' ijw@build$ ./a.out Aborted (core dumped) ijw@build$ sudo setcap "cap_net_admin=+ep" a.out ijw@build$ ./a.out Aborted 

有什么办法可以在debugging时启用它,并且真的想看到核心文件?

经过更多的研究,我有两个答案。

  1. 您可以完整更改系统行为。 这不是一个用户开发机器以外的真正适合,但它有诀窍:

     echo 1 > /proc/sys/fs/suid_dumpable 

    测试过,工作。

  2. 您可以通过调用prctl()来更改特定程序的行为:

     prctl(PR_SET_DUMPABLE, 1); 

    通过这种方式,特权程序自己确定它应该是可以推,的,整个系统不受影响。

    我没有试过这个。