开始的时候我是在终端中使用sudo 命令打开 wireshark 的,因为如果不这样的话 wireshark 就没法抓包啊。偶尔抓一次包就使用这样的方式提权。

今天使用 wireshark 的时候特意留意了一下 wireshark 的提示信息,大致就是告诉我,使用 root 权限,危险!!

那一定有解决办法喽,当然。提示信息里给出了这个网址:https://wiki.wireshark.org/CaptureSetup/CapturePrivileges

里面给出了好几种解决方法,我这里只说一下我在我的archlinux中使用的方法。

1. 假设你安装 wireshark 时的依赖包中的 dumpcap 这个软件的位置是 /bin/dumpcap

2. 设置 dumpcap 归 root 所有,属于 wireshark 组。(wireshark 组在我安装wireshark的时候是自动创建的)

chown root:wireshark /bin/dumpcap

3. 安全起见,为 dumpcap 去掉 other 的权限。

chmod o-rwx /bin/dumpcap

4. 为 dumpcap 设置 setuid,让其在执行的时候拥有 root 的权限。

chmod u+s /bin/dumpcap

5. 将你想用来启动 wireshark 的用户添加进 wireshark 组中,假设用户名是 userone。

usermod -a -G wireshark userone

6. 完成!这种做法的原理是借助 setuid 进行提权,而且为 dumpcap 去掉 other 的执行权限来防止被滥用。

ps:将用户添加进 wireshark 组之后可能不会立即生效,反正我是重新登录之后才生效的。

#########20180624更新########

今天又重新安装了一下 wireshark,安装的时候参照archlinux 的wiki 进行配置。发现archlinux 的wiki中并没有提到要为/bin/dumpcap文件设置 setuid,而是只说只要将用户加入到wireshark组中即可,试了一下,果然可以。

跟着wiki 的链接找到了wireshark 官网的说明,https://wiki.wireshark.org/CaptureSetup/CapturePrivileges#Most_UNIXes

官网提到了两种方式:

1.Setting network privileges for dumpcap if your kernel and file system support file capabilities
2.Setting network privileges for dumpcap if your kernel and file system don't support file capabilities

其中第二种就是之前说过的setuid的方式。

至于第一种,是用 setcap 命令为文件设置capabilities 的方式。

设置方式是执行命令:setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap

若使用第一种方式,这样就不用为 /bin/dumpcap 文件设置setuid了,这个文件的所属用户和所属组分别是 root 和 wireshark,权限为 0754,这样就保证了非root用户和不在wireshark组中的用户没有执行权限。

对于capabilities是什么,这是相关的man手册:http://man7.org/linux/man-pages/man7/capabilities.7.html

capabilities的使用是为了细分超级用户的权限。

capabilities需要kernel和文件系统的支持。

linux中非root用户使用wireshark进行抓包的更多相关文章

  1. Linux系统root用户忘记密码解决方法

    一:在linux系统启动时(如下图),按e键 二:进入到设置页面,定位到如下行: 三:按e键,进入输入界面 四:在编辑行最后面,空格,输入single,回车后回到第二步界面,只是后面多了single ...

  2. 破解Linux系统root用户密码

    linux系统的启动过程  在介绍破解Linux系统root密码之前先了解一下linux系统的启动过程 开机自检(POST),初始化部分硬件 搜素可用于引导的启动设备(如磁盘的MBR) 读取并将控制权 ...

  3. 【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

    SSH原理:[Hadoop系列]linux SSH原理解析 操作环境: CentOS 6.5 操作对象: 用户A主机和远程主机B 正文部分:斜体加粗代表linux指令. linux下 非root用户免 ...

  4. Linux中root用户找不到JAVA_HOME

    Linux中root用户找不到JAVA_HOME   在Ubuntu环境中安装好Java环境后设置环境变量:在/etc/profile中设置好了JAVA_HOME变量并引入到PATH中,用于Ubunt ...

  5. Wireshark数据抓包教程之安装Wireshark

    Wireshark数据抓包教程之安装Wireshark 安装Wireshark 通过上一节的学习可以根据自己的操作系统来下载安装Wireshark了.本书中已开发版1.99.7(中文版)为主,下面介绍 ...

  6. Wireshark数据抓包教程之Wireshark的基础知识

    Wireshark数据抓包教程之Wireshark的基础知识 Wireshark的基础知识 在这个网络信息时代里,计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及.Wireshark作为国 ...

  7. Wireshark数据抓包分析——网络协议篇

                   Wireshark数据抓包分析--网络协议篇     watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF4dWViYQ==/ ...

  8. Wireshark数据抓包教程之认识捕获分析数据包

    Wireshark数据抓包教程之认识捕获分析数据包 认识Wireshark捕获数据包 当我们对Wireshark主窗口各部分作用了解了,学会捕获数据了,接下来就该去认识这些捕获的数据包了.Wiresh ...

  9. Wireshark数据抓包教程之Wireshark捕获数据

    Wireshark数据抓包教程之Wireshark捕获数据 Wireshark抓包方法 在使用Wireshark捕获以太网数据,可以捕获分析到自己的数据包,也可以去捕获同一局域网内,在知道对方IP地址 ...

随机推荐

  1. uboot中添加FIQ中断及相关问题

    本文主要说明了在uboot中添加FIQ中断时遇到的问题以及对应的解决办法. 首先交代一下项目的软硬件环境.硬件方面,使用s3c2440作为主控芯片,外接串口.网卡等设备.软件方面,主控芯片上电后运行u ...

  2. webdriver中定位元素,报无法找到元素的问题

    webdriver中定位元素,报无法找到元素的问题时,需要查看以下几点: 1 用火狐的firebug插件定位元素,确保这个元素的定位正确: 2 在火狐的firebug插件的,在html页签中输入fra ...

  3. 李洪强漫谈iOS开发[C语言-046]-统计输入字符个数

  4. 【android异步处理】一个关于android异步处理的文章系列

    最近读了Android异步处理系列文章索引,感觉这个文章系列写得不错!可以作为参考

  5. 【转】Selenium WebDriver + Python 环境

    转自:http://www.myext.cn/webkf/a_11878.html 1. 下载必要工具及安装包 1.1 [Python开发环境] 下载并安装Python 2.7.x版本 下载地址:ht ...

  6. jQuery cdn使用介绍

    如果您不希望下载并存放jQuery,那么也可以通过 CDN(内容分发网络)引用它,下面是具体实现,有类似需求的各位可以参考下哈,希望对你有所帮助   如果您不希望下载并存放 jQuery,那么也可以通 ...

  7. jquery ui autocomplete 实现点击文本框,出现所有查询信息效果,与bootstrap结合使用修改样式

    直接看代码 <!doctype html> <html lang="en"> <head> <meta charset="utf ...

  8. jetBrains phpstorm/webstorm 编辑器使用诀窍

    下载地址 https://www.jetbrains.com/products.html?fromMenu CTRL + F12 / COMMAND + F12 打开类中的结构 Ctrl + b / ...

  9. 怎么启动或停止mysql服务

    在linux下,  启动mysql用 service mysql start   停止用 service mysql stop 在windows下, 启动用 net start mysql    停止 ...

  10. Python字符串,元组、列表、字典

    1.字符串 <string>.strip() 去掉两边空格及去指定字符 <string>.split() 按指定字符分隔字符串为数组 <string>.isdigi ...