を利用するプログラムをデバッグしていますlibnetfilter_queue
。ドキュメントには、ユーザースペースのキュー処理アプリケーションがCAP_NET_ADMIN
機能するための機能が必要であると記載されています。setcap
私は次のようにユーティリティを使用してこれを行いました:
$ sudo setcap cap_net_raw,cap_net_admin=eip ./a.out
getcap
a)プログラムが機能し、b)次の出力が返されるため、機能が正しく適用されていることを確認しました。
$ getcap ./a.out
./a.out = cap_net_admin,cap_net_raw+eip
gdb
ただし、コマンドラインから(など)を使用してこのプログラムをデバッグしようとする$ gdb ./a.out
と、正しいアクセス許可が設定されていないために失敗します。のデバッグ機能は、gdb
それ以外の場合は完全に機能し、通常どおりにデバッグします。
私はこれらの機能をgdb
バイナリ自体に適用しようとしても無駄になりました。私はこれを見た目どおりに実行しました(マンページに記載されているように、「i
」フラグを使用すると、デバッグ対象者がデバッガーから機能を継承できる可能性があります。
私が見逃している些細なことはありますか、それともこれは本当にできないのでしょうか?