本站支持 ActivityPub: [email protected]

Linux下Wireshark无法抓包问题

图片来源: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

参考:

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

4 条评论 “Linux下Wireshark无法抓包问题”