开始的时候我是在终端中使用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. 关于Autoit上传文件的问题

    Autoit上传文件需要安装两个软件: 使用这个做文件上传时:在代码中需要添加的代码如下: Runtime.getRuntime().exec("d:/zhpg.exe"); D盘 ...

  2. 高性能MySQL第1章知识点梳理

    1. MySQL的逻辑架构 最上面不是MySQL特有的,所有基于网络的C/S的网络应用程序都应该包括连接处理.认证.安全管理等. 中间层是MySQL的核心,包括查询解析.分析.优化和缓存等.同时它还提 ...

  3. 《深入.NET平台和C# 编程》内测纠错记录

    1.  .NET框架的核心组件包括(BD)(选择两项) A.CTS   (通用类型系统) B.CLR   (公共语言运行时,.NET的基础) C.CLS   (公共语言规范) D.FCL   (框架类 ...

  4. POJ 1195 二维树状数组

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 18489   Accepted: 8558 De ...

  5. java类加载机制

    使用某个类是发生的事情 加载->链接(验证.准备.解析)->初始化->可以使用 加载:将class文件字节码内容加载到内存当中,并将这些静态数据转换成方法区中的运行时数据结构 在堆中 ...

  6. Window7 驱动编程环境配置

    1.  安装VS2010,WDK7.60(GRMWDK_EN_7600_1) 2.  新建VC 控制台项目(选择为空项目) 3.  新建项目配置“driver” ,点击下拉按钮-点击(配置管理器) 输 ...

  7. Interface => IDataErrorInfo

    Introduction to common Interfaces IDataErrorInfo Provides the functionality to offer custom error in ...

  8. [转]Ubuntu下使用Jni开发例子

    http://www.cnblogs.com/zxglive2006/archive/2012/01/15/2323110.html   先用eclipse 创建 Java Project; 然后直接 ...

  9. play for scala 实现SessionFilter 过滤未登录用户跳转到登录页面

    一.编写SessionFilter.scala代码 package filters import javax.inject.{Inject, Singleton} import akka.stream ...

  10. 《linux内核设计与实现》读书笔记第三章

    第3章 进程管理 3.1 进程 1.进程 进程就是处于执行期的程序. 进程包括: 可执行程序代码 打开的文件 挂起的信号 内核内部数据 处理器状态 一个或多个具有内存映射的内存地址空间 一个或多个执行 ...