当我运行“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
你能否建议为什么在第二种情况下我无法写入文件?
答案 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