目录
玩Linux服务器,尤其是涉及到网络分析和问题排查的时候,Wireshark绝对是个离不开的神器。但很多时候我们并不想或者不能直接在图形界面下操作,比如在纯命令行的VPS上。这时候,Wireshark的命令行核心工具——Dumpcap
,就成了我们的得力助手,专门用来抓取网络数据包。
不过,一个很常见也挺烦人的问题是,默认情况下,出于安全考虑,普通用户是没权限直接运行Dumpcap
抓包的。每次都得上sudo
,不仅麻烦,有时候在自动化脚本里也不方便。今天,我就来给大家盘点一下,在Debian或者Ubuntu这类系统上,怎么给普通用户安全地授权,让他们也能愉快地使用Dumpcap
。
方法一:使用 setcap
命令(个人首推)
说实话,这是我个人最推荐,也是感觉最优雅、最安全的一种方法。setcap
命令的作用,就是给一个可执行文件赋予特定的“能力”(Capabilities),让它在运行时能拥有某些root才有的特权,但又不需要整个程序都以root身份运行。这就很精髓了,权限控制得非常精准。操作也简单,就一行命令:
sudo setcap 'cap_net_raw,cap_net_admin=eip' /usr/sbin/dumpcap
这里eip
的意思就是让这个可执行文件(executable)在运行时能“继承”(inherited)和“允许”(permitted)我们赋予它的网络抓包和管理权限。搞定之后,你的普通用户就能直接调用dumpcap
了,干净利落。
方法二:将用户添加到 wireshark
组
这也是一个非常正统和规范的玩法,通过Linux的用户组来管理权限,思路特别清晰。尤其适合当你有多个用户都需要抓包权限时,用组来统一管理,比一个个去授权要方便得多。一般分这几步走:
首先,检查下系统里有没有wireshark
这个组,没有的话就创建一个:
sudo groupadd wireshark
然后,把你自己的用户名加到这个组里。记得把YOUR_USERNAME
换成你自己的用户名:
sudo usermod -a -G wireshark YOUR_USERNAME
接着,把dumpcap
这个程序文件的所属组改成wireshark
:
sudo chgrp wireshark /usr/bin/dumpcap
最后一步,设置下文件权限,确保只有root和wireshark
组的成员可以执行它,其他人不行:
sudo chmod 750 /usr/bin/dumpcap
操作完后,你可能需要重新登录一下,好让用户组的变更生效。
方法三:修改 sudoers
文件(简单粗暴)
这个方法就比较直接了,直接去改sudoers
配置文件,让某个用户在执行dumpcap
这条命令时,可以免密sudo
。虽然方便,但我个人其实不太感冒这种做法,总觉得给sudoers
开的口子越少越安全。不过,如果你这台VPS就自己用,而且很清楚自己在干嘛,那也不失为一个快速的解决方案。
用visudo
命令来编辑,这是最安全的编辑方式,能帮你检查语法错误:
sudo visudo
然后在文件末尾加上这么一行(同样,your_username
换成你的用户名):
your_username ALL=(root) NOPASSWD: /usr/sbin/dumpcap
保存退出。之后这个用户执行sudo /usr/sbin/dumpcap
的时候就不用再输密码了。
方法四:使用 polkit
(高阶玩法)
polkit
这玩意儿可能大家平时接触得比较少,它算是一个更现代、更精细化的权限控制框架。在很多桌面环境里,你操作敏感设置时弹出的那个让你输密码的授权框,背后就是它在工作。用它来给dumpcap
授权,显得非常专业,但配置也相对繁琐一点。适合那些喜欢把系统权限玩得明明白白的站长。
先创建一个polkit
的规则文件:
sudo nano /etc/polkit-1/rules.d/50-dumpcap.rules
然后把下面的规则贴进去:
polkit.addRule(function(action, subject) {
if (action.id == "org.wireshark.dumpcap" && subject.isInGroup("wireshark")) {
return polkit.Result.YES;
}
});
这条规则的意思是,如果一个操作是针对org.wireshark.dumpcap
的,并且发起这个操作的用户在wireshark
用户组里,那就直接允许(YES)。
最后,验证一下
不管你用了哪种方法,最后都得验证一下是不是真的成功了。比如用了第一种setcap
方法后,你可以用下面这个命令来查看下dumpcap
现在拥有的“能力”:
getcap /usr/bin/dumpcap
如果能看到类似/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip
的输出,那就说明设置成功了。这时候,你就可以切换到普通用户,直接运行dumpcap
试试看能不能抓包了。
总而言之,方法不少,各有优劣。我个人的建议是,单人使用或者想最快搞定,就用setcap
。如果需要管理多个用户,那创建wireshark
用户组是更规范的选择。折腾归折腾,大家在修改系统权限的时候还是要多加小心,搞清楚每条命令是干嘛的,避免给系统带来安全风险。
上述内容来源自互联网,不代表本站所有观点!欢迎关注我们:zhujipindao.com
评论前必须登录!
注册