我正在尝试使用 Linux(Ubuntu)上的 Wireshark 监控一些 USB 流量。如果我以普通用户身份(没有 root 权限)启动 Wireshark,则不会列出 USB 总线接口。如果我这样做,我确实会看到 USB 总线接口。使用以下命令列出可用的捕获接口sudo wireshark
可能可以最好地说明这一点:dumpcap
~$dumpcap -D
1. eth0
2. any (Pseudo-device that captures on all interfaces)
3. lo
相对
~$sudo dumpcap -D
1. eth0
2. usbmon1 (USB bus number 1)
3. usbmon2 (USB bus number 2)
4. usbmon3 (USB bus number 3)
5. usbmon4 (USB bus number 4)
6. usbmon5 (USB bus number 5)
7. usbmon6 (USB bus number 6)
8. usbmon7 (USB bus number 7)
9. usbmon8 (USB bus number 8)
10. any (Pseudo-device that captures on all interfaces)
11. lo
有没有办法可以配置 Wireshark,这样我就不必以 root 身份运行来访问 USB 总线接口?我之前关注过指引设置 wireshark,这样我就不必以 root 身份运行它来查看以太网接口,所以我想知道这是否只是更改其他可执行文件的权限的问题,以便能够看到 USB 接口而无需以 root 身份运行...
答案1
是的,您只需要为 dumpcap 实用程序添加另一项功能。CAP_DAC_OVERRIDE 可以覆盖文件的权限检查,并允许 dumpcap 访问 USB 捕获所需的文件。这不是一个完美的解决方案,但它比以 root 身份运行整个 Wireshark 要好得多。由于您已经完成了大部分工作,因此只需运行最后一条命令即可。
sudo setcap'CAP_NET_RAW + eip CAP_NET_ADMIN + eip CAP_DAC_OVERRIDE + eip'/usr/bin/dumpcap
阅读 Evan Huus 对此错误报告的回复以获取更多信息:
https://bugs.launchpad.net/ubuntu/+source/wireshark/+bug/893828
答案2
CAP_DAC_OVERRIDE 肯定会让 wireshark 能够以非 root 身份捕获 usb,但它也允许访问其他所有内容。从安全角度来看,这并不好。但是还有另一种方法。
sudo chmod go+r /dev/usbmon*
这将仅允许访问 usb 监控。可以通过创建一个名为 wireshark 的组然后执行以下操作来进一步完善这一点:
sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod g+s /usr/bin/dumpcap
sudo chgrp wireshark dev/usbmon*
sudo chmod g+r /dev/usbmon*
这样设置后 dumpcap 就可以访问监视器 usb,并且仍然受到正常权限限制。此外,属于“wireshark”组的程序也将拥有此类访问权限。
对于那些不知道 dumpcap 是 wireshark 的底层工作程序的人来说。此外,除非进行额外的配置更改,否则 /dev/usbmon* 将在重新启动时恢复为默认权限,从而禁用 USB 监控访问。只需重新运行即可sudo chmod g+r /dev/usbmon*
启用。对 dumpcap 权限的更改将在重新启动后继续有效。