如何从setcap可执行文件中获取coredump?

时间:2011-08-04 21:28:25

标签: linux debugging privileges elevated-privileges

为了防止特权数据的转义,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

在调试时是否有任何方法可以启用它并且实际上想要查看核心文件?

1 个答案:

答案 0 :(得分:8)

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

  1. 您可以完整地更改系统行为。这不仅仅适用于一个用户开发机器,但它可以解决问题:

    echo 1 > /proc/sys/fs/suid_dumpable
    

    经过测试,有效。

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

    prctl(PR_SET_DUMPABLE, 1);
    

    通过这种方式,特权程序自行确定它应该是可转储的,并且系统整体不受影响。

    我没试过这个。