一、问题
使用tcpdump抓包并写入文件时出现 Permission denied,权限不足。
bash
[root@storm03 tcpdumpTest]# tcpdump -i em4 udp and host 225.1.2.5 and port 10111 -G 60 -w %Y_%m%d_%H%M_%S.pcap
tcpdump: listening on em4, link-type EN10MB (Ethernet), capture size 65535 bytes
tcpdump: 2024_0422_1602_51.pcap: Permission denied
二、分析
既然提示权限不足,咱们就去看权限,使用如下命令查看当前目录的权限:
bash
[root@storm03 tmp]# ll
总用量 10031100
drwxr-xr-x 2 root root 4096 4月 22 16:04 tcpdumpTest
可以看到目录所有者root用户具有读、写和执行权限,所属组和其他用户只具有读和执行权限,没有w写权限;
而tcpdump抓包写入的文件所属组和用户一般为tcpdump,如下所示:
bash
[root@storm03 tmp]# ll
总用量 10031128
-rw-r--r-- 1 tcpdump tcpdump 767743134 4月 19 10:44 last_test1.cap
-rw-r--r-- 1 tcpdump tcpdump 449740452 4月 19 09:13 last_test.cap
那就很清楚了,为当前目录的其他用户也设置w写权限即可解决问题。
三、解决方案
使用如下命令为当前目录开放所有权限:
bash
[root@storm03 tmp]# chmod 777 tcpdumpTest/
[root@storm03 tmp]# ll
drwxrwxrwx 2 root root 4096 4月 22 16:04 tcpdumpTest
再次使用tcpdump抓包,正常:
bash
[root@storm03 tcpdumpTest]# tcpdump -i em4 udp and host 225.1.2.5 and port 10111 -G 10 -Z root -w %Y_%m%d_%H%M_%S.pcap
tcpdump: listening on em4, link-type EN10MB (Ethernet), capture size 65535 bytes
^C61846 packets captured
62143 packets received by filter
0 packets dropped by kernel
[root@storm03 tcpdumpTest]# ll
总用量 82996
-rw-r--r-- 1 root root 22404468 4月 22 16:34 2024_0422_1634_46.pcap
-rw-r--r-- 1 root root 22877124 4月 22 16:35 2024_0422_1634_56.pcap
-rw-r--r-- 1 root root 22753464 4月 22 16:35 2024_0422_1635_06.pcap
-rw-r--r-- 1 root root 16941444 4月 22 16:35 2024_0422_1635_16.pcap