j'ai essayé sur Centos 5, toujours le même même sur tmp ou dossier racine. à partir de la page de manuel tcpdump, les privilèges sont supprimés lorsqu'ils sont utilisés avec l'option -Z (activée par défaut) avant d'ouvrir le premier fichier de sauvegarde. car vous avez spécifié «-C 1», l'autorisation refusée se produit en raison de la taille de fichier déjà atteinte 1, et lors de la création d'un nouveau fichier, une erreur d'autorisation refusée est générée. il suffit donc de spécifier l'utilisateur -Z
# 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) = ?
vous pouvez voir le résultat strace ci-dessus, tcpdump a supprimé les privilèges dans l'utilisateur et le groupe pcap (77).
# grep 77 /etc/group
pcap:x:77:
# grep 77 /etc/passwd
pcap:x:77:77::/var/arpwatch:/sbin/nologin
Depuis la page de manuel de 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 ]
Spécifiez un utilisateur spécifique avec l'utilisateur -Z
# 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
SELinux fonctionne-t-il? Vérifiez en tapant son terminal:
Si c'est le cas
Enforcing
, vous pouvez essayer de désactiver SELinux et de réessayer tcpdump, pour voir si SE l'arrêtait.la source
Le message d'erreur n'a pas beaucoup de sens pour moi. SELinux est cependant une explication possible. Vous pouvez regarder de plus près ce qui se passe en démarrant tcpdump via strace:
la source
vous devez changer le mode de répertoire sous lequel vous exécutez tcpdump.
chmod 777
Exécutez maintenant la commande tcpdump -vv -i any -s0 -w nom_fichier.pcap
Ça devrait marcher ... !!
la source