tcpdump 权限问题

Siv*_*gal 17 permissions 14.04 tcpdump

运行 tcpdump 时遇到问题。我必须用非 root 用户运行 tcpdump。在网上搜索我的问题并发现我应该:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump
Run Code Online (Sandbox Code Playgroud)

这使我能够与我的用户一起运行tcpdump但后来我得到了:

you don't have permission to capture on that device
Run Code Online (Sandbox Code Playgroud)

在我尝试捕获的任何设备上。

也有点蛮力并做了:

sudo chmod +s /usr/sbin/tcpdump
Run Code Online (Sandbox Code Playgroud)

那也没有做到。

小智 38

有点晚了,但我遇到了同样的问题。您需要授予tcpdump允许原始数据包捕获网络接口操作的权限和能力。

添加捕获组并将您自己添加到其中:

sudo groupadd pcap
sudo usermod -a -G pcap $USER
Run Code Online (Sandbox Code Playgroud)

接下来,更改组tcpdump并设置权限:

sudo chgrp pcap /usr/sbin/tcpdump
sudo chmod 750 /usr/sbin/tcpdump
Run Code Online (Sandbox Code Playgroud)

最后,使用setcap给予tcpdump必要的权限:

sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
Run Code Online (Sandbox Code Playgroud)

请注意,这将允许pcap组中的每个人操作网络接口并读取原始数据包!

在这里找到:配置 tcpdump 以非 root 用户身份工作


小智 0

也许这可能有效。与已经发布的内容类似。尚未在 ubuntu 上进行测试。

(使用您的用户所属的组) chgrpwireshark /usr/sbin/tcpdump

setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/sbin/tcpdump

使用 getcap /usr/sbin/tcpdump 你应该看到 /usr/sbin/tcpdump = cap_net_admin,cap_net_raw+eip