为了防止特权数据的转义,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时启用它,并且真的想看到核心文件?
经过更多的研究,我有两个答案。
您可以完整更改系统行为。 这不是一个用户开发机器以外的真正适合,但它有诀窍:
echo 1 > /proc/sys/fs/suid_dumpable
测试过,工作。
您可以通过调用prctl()来更改特定程序的行为:
prctl(PR_SET_DUMPABLE, 1);
通过这种方式,特权程序自己确定它应该是可以推,的,整个系统不受影响。
我没有试过这个。