图片来源:https://www.pixiv.net/artworks/101295432
Linux下从网卡读取数据需要root权限,以普通用户身份运行的Wireshark无法抓包
临时方案
使用root权限启动Wireshark
sudo -E wireshark
不太安全的方案
利用“SUID”让所有用户执行特定二进制程序时能够拥有root权限,SUID简单介绍可参看 SUID、SGID和SBIT
sudo chmod 4755 /usr/bin/dumpcap
推荐方案
给 /usr/bin/dumpcap
添加抓包的权限,添加一个新用户组wireshark
,使所有组内用户能够执行 /usr/bin/dumpcap
,有的Linux发行版(比如ArchLinux、Ubuntu)用包管理器安装wireshark后,其实默认就是这个方案,只是不会自动将用户加入wireshark
用户组而已
查看/usr/bin/dumpcap
ls -l /usr/bin/dumpcap
-rwxr-xr-- 1 root wireshark 104544 Sep 8 03:05 /usr/bin/dumpcap
如果输出类似上面这样, 文件所属组为wireshark,组成员具有可读和可执行权限,则只需要将当前用户加入wireshark用户组,然后注销重新登录即可
sudo usermod -aG wireshark $USER
如果不是话,就要自己手动执行创建用户组等全部操作,然后注销重新登录
sudo groupadd wireshark
sudo usermod -aG wireshark $USER
sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod o-rx /usr/bin/dumpcap
sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
参考:
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
4 条评论 “Linux下Wireshark无法抓包问题”
test
test