“tcpdump -w 1.pcap”有效,但“tcpdump -C 100 -w 1.pcap” - 权限被拒绝

时间:2013-08-05 04:37:24

标签: tcpdump rights

当我运行“tcpdump -w 1.pcap”时,我需要限制文件大小。我尝试使用键“-C”来执行此操作,但是当我添加它时,我收到错误“权限被拒绝”。所以:

> sudo tcpdump -w 1.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C821 packets captured
847 packets received by filter
24 packets dropped by kernel

可是:

> sudo tcpdump -C 100 -w 1.pcap
tcpdump: 1.pcap: Permission denied

我从我的主目录运行命令,我尝试删除并创建文件,然后运行具有不同权限的命令,最后我有:

-rwxrwxrwx 1 root root 0 Aug  5 10:30 1.pcap

-rwxrwxrwx 1 fd8 users 0 Aug  5 10:30 1.pcap

你能否建议为什么在第二种情况下我无法写入文件?

3 个答案:

答案 0 :(得分:8)

您需要-Z root。阅读手册页:

   -Z     Drops privileges (if root) and changes user ID to user and the group ID to the primary group of user.

          This behavior is enabled by default (-Z tcpdump), and can be disabled by -Z root.

答案 1 :(得分:4)

我在Ubuntu 12.04 LTS上遇到了类似的问题,我的案例修复如下程序。

sudo apt-get install apparmor-utils

user2704275引用的aa-complain命令包含在此包中。

如果您的环境是RedHat / CentOS发行版,您可以通过yum执行相同的命令。

sudo aa-complain /usr/sbin/tcpdump

这会将tcpdump的AppArmor模式从“强制”更改为“抱怨”。 您可以在/ sys / kernel / security / apparmor / profiles中检查AppArmor状态。

然后我可以成功地使用sudo获得tcpdump。

获取tcpdump后,出于安全原因,您可以将apparmor状态恢复为以前的模式,如下面的命令。

sudo aa-enforce /usr/sbin/tcpdump

问候。

答案 2 :(得分:2)

当我尝试从文件中读取时,我遇到了类似的问题,例如

tcpdump -r example.cap 'icmp[icmptype] = icmp-echo'

对我来说,AppArmor导致了我必须在'tcpdump'上从'强制'模式切换到'抱怨'模式的问题。以root身份运行以下命令:

aa-complain /usr/sbin/tcpdump