Ich habe Centos 5 ausprobiert, immer noch das Gleiche, sogar auf tmp oder im Root-Ordner. In der tcpdump-Manpage werden Berechtigungen gelöscht, wenn sie mit der Option -Z (standardmäßig aktiviert) verwendet werden, bevor die erste Sicherungsdatei geöffnet wird. Da Sie "-C 1" angegeben haben, tritt die verweigerte Berechtigung auf, weil die Dateigröße bereits 1 erreicht hat. Wenn Sie eine neue Datei erstellen, wird der Fehler "Berechtigung verweigert" ausgegeben. Geben Sie einfach den Benutzer -Z an
# strace tcpdump -i eth0 -n -w out.pcap -C 1
fstat(4, {st_mode=S_IFREG|0644, st_size=903, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aea31934000
lseek(4, 0, SEEK_CUR) = 0
read(4, "root:x:0:root\nbin:x:1:root,bin,d"..., 4096) = 903
read(4, "", 4096) = 0
close(4) = 0
munmap(0x2aea31934000, 4096) = 0
setgroups(1, [77]) = 0
setgid(77) = 0
setuid(77) = 0
setsockopt(3, SOL_SOCKET, SO_ATTACH_FILTER, "\1\0\0\0\0\0\0\0\310\357k\0\0\0\0\0", 16) = 0
fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
recvfrom(3, 0x7fff9563d35f, 1, 32, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
fcntl(3, F_SETFL, O_RDWR) = 0
setsockopt(3, SOL_SOCKET, SO_ATTACH_FILTER, "\1\0\17\0\0\0\0\0P\327\233\7\0\0\0\0", 16) = 0
open("out.pcap", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission denied)
write(2, "tcpdump: ", 9tcpdump: ) = 9
write(2, "out.pcap: Permission denied", 27out.pcap: Permission denied) = 27
write(2, "\n", 1
) = 1
exit_group(1) = ?
Wie Sie oben sehen können, hat tcpdump die Berechtigungen in Benutzer- und Gruppen-pcap (77) abgelegt.
# grep 77 /etc/group
pcap:x:77:
# grep 77 /etc/passwd
pcap:x:77:77::/var/arpwatch:/sbin/nologin
Aus der Manpage tcpdump, -C
# man tcpdump
-C Before writing a raw packet to a savefile, check whether the file is currently larger than file_size and, if so,
close the current savefile and open a new one. Savefiles after the first savefile will have the name specified
with the -w flag, with a number after it, starting at 1 and continuing upward. The units of file_size are mil-
lions of bytes (1,000,000 bytes, not 1,048,576 bytes).
**Note that when used with -Z option (enabled by default), privileges are dropped before opening first savefile.**
# tcpdump --help
tcpdump version 3.9.4
libpcap version 0.9.4
Usage: tcpdump [-aAdDeflLnNOpqRStuUvxX] [-c count] [ -C file_size ]
[ -E algo:secret ] [ -F file ] [ -i interface ] [ -M secret ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ] [ -y datalinktype ] [ -Z user ]
[ expression ]
Spezifischen Benutzer mit -Z Benutzer angeben
# tcpdump -i eth0 -n -w out.pcap -C 1 -Z root
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
35 packets captured
35 packets received by filter
0 packets dropped by kernel
Läuft SELinux? Überprüfen Sie, indem Sie Folgendes eingeben:
In diesem Fall
Enforcing
können Sie versuchen, SELinux zu deaktivieren und den tcpdump erneut auszuführen, um festzustellen, ob SE ihn gestoppt hat.quelle
Die Fehlermeldung macht für mich wenig Sinn. SELinux ist jedoch eine mögliche Erklärung. Sie können einen genaueren Blick auf das Geschehen werfen, indem Sie tcpdump durch strace starten:
quelle
Sie sollten den Modus des Verzeichnisses ändern, in dem Sie tcpdump ausführen.
chmod 777
Führen Sie nun den Befehl tcpdump -vv -i any -s0 -w file_name.pcap aus
Es sollte funktionieren ...!!
quelle