基于Linux的Netbeans Java项目上的jNetPcap权限

问题描述 投票:1回答:1

在Linux Mint 19.2肉桂,内核4.15.0-72-generic上运行的Netbeans 11.2>

我将几年前开发的自定义网络数据包嗅探项目从Windows 7转移到了Linux。这使用jNetPcap进行实际的数据包捕获。 JnetPcap是Libpcap的包装器。

问题:在Netbeans中运行项目时,出现错误“您无权在该设备上捕获”。

将项目编译为.jar文件,然后我以root身份运行,一切都很好。因此证明该项目代码正常,并且该问题仅限于缺少权限。

正在使用的“本地共享库”是libjnetcap.so

基本上,我希望能够在Netbeans 11.2中运行/调试此项目

为了解决这个问题,我尝试了很多事情:

  1. 假设是libjnetcap.so正在访问网络接口,我尝试使用setuid赋予它提升的特权,但没有任何效果。我也尝试使用sudo setcap cap_net_raw=p ./libjnetpcap.so赋予它功能,再次无效。

  2. setuid上尝试过/usr/bin/java。这次,我可以不使用.jar而运行已编译的项目sudo文件。但是,Netbeans IDE不会从桌面图标加载。从终端运行Netbeans会引发错误消息,指示不允许使用setuid

  3. 我无法在/usr/bin/java上设置功能。文件类型错误?

  4. 我在这个论坛上找到了这个:

在您的情况下,pcap需要对网络接口的低级访问。由于存在安全隐患(捕获网络流量,生成任意网络数据包等),因此此类访问仅限于特权用户。例如,在Linux上,pcap需要CAP_NET_RAW功能对用户可用。

这听起来像是我的问题,但pcap在哪里?我似乎只有libjnetcap.so库文件。

如果有某种友善的灵魂可以给我任何指点,我将非常感激。

在Linux Mint 19.2上运行的Netbeans 11.2 Cinnamon,内核4.15.0-72(通用)我已经将我几年前开发的自定义网络数据包嗅探项目从Windows 7迁移到Linux。这使用...

permission-denied jnetpcap netbeans-11
1个回答
1
投票

不确定我的问题真的很晦涩,所以很少有人遇到。也许我未能充分描述它。无论如何,我设法自己解决了。我已经在下面描述了该解决方案,以防其他任何人都应该经历。需要找到正在使用的Java可执行文件,然后更改其功能。1.查找正在使用的Java可执行文件。输入命令。Java在哪里这给出了符号链接的路径。功能不能应用于符号链接,因此请遵循此目标。这是另一个符号链接,其目标是可执行文件。就我而言,这是:/ usr / lib / jvm / java-8-openjdk-amd64 / jre / bin2.将目录更改为此,即光盘/ usr / lib / jvm / java-8-openjdk-amd64 / jre / bin3.更改其功能:sudo setcap cap_net_raw,cap_net_admin = eip java

© www.soinside.com 2019 - 2024. All rights reserved.