Как получить coredump из исполняемого файла setcap? - PullRequest
2 голосов
/ 05 августа 2011

Чтобы предотвратить выход привилегированных данных, исполняемые файлы setcap в Linux не выгружают ядро:

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 Ответ

8 голосов
/ 05 августа 2011

У меня есть два ответа после дополнительных исследований.

  1. Вы можете полностью изменить поведение системы.Это на самом деле не подходит для однопользовательской машины разработки, но делает свое дело:

    echo 1 > /proc/sys/fs/suid_dumpable
    

    Протестировано, работает.

  2. Вы можете изменить поведениедля конкретной программы, вызвав в ней prctl ():

    prctl(PR_SET_DUMPABLE, 1);
    

    Таким образом, привилегированная программа сама определяет, что она должна быть дампируемой, и что система в целом не затронута.

    Я не пробовал это.

...