使用-w选项时TCPdump写入权限错误

使用-w选项时TCPdump写入权限错误

我遇到了一个非常奇怪的错误,我正在以 root 身份运行 tcpdump 并想记录输出,当我这样做时

tcpdump -i eth0 -w logs/local.dump

它工作正常,但是当我像下面这样设置输出路径时,出现权限错误:

tcpdump -i eth0 -w /mnt/local.dump

/home/ubuntu 中的“logs”文件夹的权限为 755 和 root:root,/mnt 的权限也是 755 和 root:root。但我不明白为什么当我将输出设置为 /mnt/local.dump 时会出现权限错误。

答案1

我在 Ubuntu 上也遇到了同样的问题。根据这个问题的可接受答案,tcpdump 在执行后似乎会放弃权限:

在 centos 上使用旋转文件选项时,tcpdump 失败,权限被拒绝

直到我开始尝试使用 -C 选项来限制文件大小时,我才开始遇到权限问题。即使删除我在 -w 中拥有的原始文件也无法恢复权限,将 -w 更改为同一目录中的其他文件也无法恢复权限。

起作用的是将目录更改为 root 拥有的位置,并且对目标目录和父路径的限制宽松。

我不确定 tcpdump 在后台做了什么导致这个问题,可能会在其他时间深入研究一下。我认为它可能缓存了某些东西,一旦你尝试旋转文件选项,如果你的权限设置不正确,它也会破坏非旋转文件选项。

答案2

我无法在 Ubuntu 14.04 上重现您描述的症状。但我在早期版本的 Ubuntu 上看到过这些症状。

我发现的原因是 SELinux 配置为限制tcpdump允许写入的位置。

我当时找到的解决方法是复制/usr/sbin/tcpdump/root/bin/tcpdump并使用该副本。

答案3

将其转换.pcapng.pcap对我来说也有效

...$ tcpdump -i enp43s0f1 -c 10 -w logs/temp.pcapng
tcpdump: logs/temp.pcapng: Permission denied
...$ tcpdump -i enp43s0f1 -c 10 -w logs/temp.pcap
tcpdump: listening on enp43s0f1, link-type EN10MB (Ethernet), capture size 262144 bytes
^C0 packets captured
0 packets received by filter
0 packets dropped by kernel

相关内容