以普通用户身份运行wireshark
在MacBook Pro上安装Fedora作为工作平台,开发HTTP客户端时,需要通过wireshark来分析通讯过程。
默认情况下wireshark需要root权限才能对网卡进行混杂模式嗅探,而平时都是采用普通用户身份来运行桌面,使用sudo在终端中切换身份运行总觉得非常麻烦。
权限分离运行Wireshark
Wireshark支持权限分离模式运行,即Wireshark GUI(或者tshark CLI)运行在普通用户权限,而dumpcap包捕捉工具作为root权限运行。这是通过安装dumpcap setuid root来实现的。
GNU/Linux发行版通常提供了包管理器来处理安装、 配置和删除软件包。Wireshark通过不同的发行版可以帮助配置dumpcap允许非root用户使用。
Debian, Ubuntu安装Wireshark包需要参考
/usr/share/doc/wireshark-common/README.Debian设置权限
手工设置dumpcap权限
如果内核和文件系统支持文件权限(file capabilities)
在Fedora 27上没有实现
首先确保已经安装了必要的工具,例如
setcap命令检查dumpcap
$ ls -lh /usr/bin/dumpcap
-rwxr-x---. 1 root wireshark 107K Aug 8 19:52 /usr/bin/dumpcap
$ sudo lsattr /usr/bin/dumpcap
--------------e---- /usr/bin/dumpcap使用以下命令设置dumcap网络权限
setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap这里
/usr/bin/dumpcap需要体换成发行版的dumpcap实际安装位置。这里的案例是在Fedora上执行的。
以non-root身份启动Wireshark,检查是否可以看到所有网络接口并且可以动态抓包
如果内核和文件系统不支持文件权限(file capabilities)
如果呢和和文件系统不支持文件权限,就需要确保
dumcap使用了set-UID成root的功能
将
dumpcap的属主设置成root- 这步也可以忽略,在CentOS/Fedora中,默认dumpcap的属主就是root,即如下
$ ls -lh /usr/bin/dumpcap
-rwxr-x---. 1 root wireshark 107K Aug 8 19:52 /usr/bin/dumpcap如果需要,执行以下命令
chown root /usr/bin/dumpcap设置
dumpcapSUID (设置了s之后,执行该程序就自动以程序所有者的身份运行,也就是前面设置的root属主身份运行,这样普通用户运行dumpcap时候就会以root身份运行。警告:这是一个安全漏洞,仅可以用在有安全保障的系统中)
chmod u+s /usr/bin/dumpcap限制
dumcap只允许一个组用户可以运行(wireshark组),其他用户去除执行权限 - 这步在Fedora中可以忽略,系统默认创建了wireshark组,并且也限制了其他组用户使用
groupadd -g 982 wireshark
chgrp wireshark /usr/bin/dumpcap
chmod o-rx /usr/bin/dumpcap完成后检查dumpcap文件权限应该如下:
$ ls -lh /usr/bin/dumpcap
-rwsr-x---. 1 root wireshark 107K Aug 8 19:52 /usr/bin/dumpcap将需要执行wireshark的用户添加到
wireshark用户组
需要退出当前登陆,重新登陆后验证普通用户身份运行wireshark
参考
Last updated
Was this helpful?