I am debugging a program that makes use of libnetfilter_queue
. The documentation states that a userspace queue-handling application needs the CAP_NET_ADMIN
capability to function. I have done this using the setcap
utility as follows:
$ sudo setcap cap_net_raw,cap_net_admin=eip ./a.out
I have verified that the capabilities are applied correctly as a) the program works and b) getcap
returns the following output:
$ getcap ./a.out
./a.out = cap_net_admin,cap_net_raw+eip
However, when I attempt to debug this program using gdb
(e.g. $ gdb ./a.out
) from the command line, it fails on account of not having the correct permissions set. The debugging functionality of gdb
works perfectly otherwise and debugs as per normal.
I have even attempted to apply these capabilities to the gdb
binary itself to no avail. I did this as it seemed (as documented by the manpages that the "i
" flag might allowed the debugee to inherit the capability from the debugger.
Is there something trivial I am missing or can this really not be done?
gdb
does work fine, it can debug any program (including this one) otherwise. – Vacillatingnfq_unbind_pf()
is returning-1
(anderrno
is set to1
), indicating failure. – Vacillating