运行 tcpdump 时遇到问题。我必须使用非 root 用户运行 tcpdump。在网上搜索我的问题并发现我应该:
sudo setcap cap_net_admin=eip /usr/sbin/tcpdump
这让我能够运行tcpdump与我的用户但后来我得到:
you don't have permission to capture on that device
在我尝试捕捉的任何设备上。
还采取了一些暴力手段,并做到了:
sudo chmod +s /usr/sbin/tcpdump
那也没用。
答案1
有点晚了,但我刚刚遇到了同样的问题。您需要授予tcpdump
权限和能力才能允许原始数据包捕获和网络接口操纵。
添加一个捕获组并将自己添加到其中:
sudo groupadd pcap
sudo usermod -a -G pcap $USER
接下来更改组tcpdump
并设置权限:
sudo chgrp pcap /usr/sbin/tcpdump
sudo chmod 750 /usr/sbin/tcpdump
最后,使用setcap
赋予tcpdump
必要的权限:
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
请注意,这将允许该组中的每个人数据包捕获操纵网络接口并读取原始数据包!
在这里找到:配置 tcpdump 以非 root 身份工作
答案2
也许这可能有用。与已经发布的内容类似。它尚未在 ubuntu 上进行测试。
(使用您的用户所属的组)chgrp wireshark /usr/sbin/tcpdump
设置cap'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