Я отлаживаю программу, которая использует libnetfilter_queue
. В документации указано, что приложению для обработки очередей пользовательского пространства для работы требуется возможность CAP_NET_ADMIN
. Я сделал это с помощью утилиты setcap
следующим образом:
$ sudo setcap cap_net_raw,cap_net_admin=eip ./a.out
Я убедился, что возможности применяются правильно: а) программа работает и б) getcap
возвращает следующий вывод:
$ getcap ./a.out
./a.out = cap_net_admin,cap_net_raw+eip
Однако, когда я пытаюсь отлаживать эту программу, используя gdb
(например, $ gdb ./a.out
) из командной строки, происходит сбой из-за отсутствия правильных разрешений. Функциональность отладки gdb
в остальном работает отлично и отлаживает как обычно.
Я даже пытался применить эти возможности к самому двоичному файлу gdb
, но безрезультатно. Я сделал это так, как казалось (как задокументировано man-страницы, что флаг "i
" может позволить отлаживаемой программе наследовать возможности от отладчика.
Есть ли что-то тривиальное, что мне не хватает, или это действительно невозможно сделать?
gdb
работает нормально, в противном случае он может отлаживать любую программу (включая эту). - person Sedate Alien   schedule 05.12.2010nfq_unbind_pf()
возвращается-1
(аerrno
установлено на1
), что указывает на сбой. - person Sedate Alien   schedule 05.12.2010