关注分享主机优惠活动
国内外VPS云服务器

Debian系统Dumpcap的权限管理(debian文件权限)

玩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

未经允许不得转载:主机频道 » Debian系统Dumpcap的权限管理(debian文件权限)

评论 抢沙发

评论前必须登录!