Chr*_*sch 5 permissions sudo networking tcpdump 20.04
我想捕获 FPGA 发送的 UDP 数据包,带宽约为 10 Gbit/s。我发现tcpdump结合快速 SSD 完全能够接收连续的 10 Gbit/s 流并将其无损地存储在磁盘上。
当我跑步时sudo tcpdump,一切都按预期进行。
但是,我需要能够在tcpdump没有sudo. 如果没有sudo我得到这个错误:
tcpdump: enp4s0f0: You don't have permission to capture on that device
(socket: Operation not permitted)
Run Code Online (Sandbox Code Playgroud)
这是我迄今为止发现并尝试在tcpdump不启用的情况下启用的内容sudo:
sudo su
groupadd pcap
usermod -a -G pcap $USER
chgrp pcap /usr/sbin/tcpdump
chmod 750 /usr/sbin/tcpdump
setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
Run Code Online (Sandbox Code Playgroud)
此处建议的解决方案
根据列出此解决方案的各个页面,这应该使我的常规用户帐户能够运行tcpdump,对吗?
但是,当我切换到常规用户帐户并运行时tcpdump,我得到以下信息:
bash: /sbin/tcpdump: Permission denied
(请注意,此错误消息与最初的错误消息不同)
我已经通过验证getent group pcap我的帐户是该pcap组的一部分。我还确认了它/sbin/tcpdump是该集团所有的pcap。我缺少什么?
经过一些实验,这最终对我有用:
sudo visudo
在 sudoers 文件的最后*处,输入:
your_username ALL = NOPASSWD: /usr/sbin/tcpdump
(替换your_username为您的用户名,将更改写入磁盘关闭编辑器)
打开一个新终端并运行sudo tcpdump. 它不再要求输入密码。
*将新规则放在最后可以避免它被其他规则覆盖。
我没有足够的声誉来发表评论,但您的二进制路径似乎有错误。
在命令中chgrp,chmod您使用路径/usr/sbin/tcpdump(注意/usr开头的 )。但在错误中,您似乎尝试运行可执行文件/sbin/tcpdump(/usr开头没有。)
尝试运行该命令which tcpdump以查找运行该命令时调用的二进制文件的路径tcpdump,然后在chgrp和chmod命令中使用该路径。
我只是使用了您帖子中的命令以及正确的路径(即 给出的路径which tcpdump),它适用于我的 Ubuntu 22.04 安装。
顺便说一句,这是正确的跑步方式tcpdump。您应该以用户身份运行它。以 root 身份或使用 sudo 运行它是危险的。
| 归档时间: |
|
| 查看次数: |
4338 次 |
| 最近记录: |