在 Linux Mint 19.2 Cinnamon、内核上运行的 Netbeans 11.24.15.0-72-generic
我已将几年前开发的自定义网络数据包嗅探项目从 Windows 7 转移到 Linux。这使用 jNetPcap 来进行实际的数据包捕获。JnetPcap 是 Libpcap 的包装器。
问题:在 Netbeans 中运行我的项目时,我收到错误“您无权在该设备上捕获”。
将项目编译为 .jar 文件,然后我以 root 身份运行,一切都很好。从而证明项目代码是可以的,并且问题仅限于缺乏权限。
正在使用的“本机共享库”是 libjnetcap.so
本质上,我希望能够在 Netbeans 11.2 中运行/调试这个项目
为了解决这个问题,我尝试了很多事情:
假设它
libjnetcap.so
正在访问网络接口,我尝试使用setuid
, 赋予它提升的权限,但没有效果。我还尝试使用 , 赋予它功能sudo setcap cap_net_raw=p ./libjnetpcap.so
,但同样无效。试穿。
setuid
_/usr/bin/java
这次我可以在.jar
不使用sudo
. 但是,Netbeans IDE 不会从桌面图标加载。从终端运行 Netbeans 会引发错误消息,setuid
不允许使用。我无法在
/usr/bin/java
. 文件类型错误?
我在这个论坛上找到了这个:
在您的情况下,
pcap
需要对网络接口进行低级访问。由于安全隐患(捕获网络流量、生成任意网络数据包等),此类访问仅限于特权用户。例如,在 Linux 上,pcap
需要CAP_NET_RAW
用户可以使用该功能。
这听起来像我的问题,但在哪里pcap
?我似乎只有libjnetcap.so
库文件。
如果某个善良的灵魂能给我任何指示等,我将不胜感激。