Você pode querer verificar o comportamento do tcpdump com strace, para ver se está fazendo algo estranho como o chrooting, se está no gentoo ou em outra distribuição que possa suid os binários.
No processo de depuração de um bot irc de python que parece não conseguir se conectar, pensei "Eu sei, vou apenas chutá-lo e ver o que ele está fazendo". Então eu corri o tcpdump como eu costumo fazer e ele diz que é um pacote capturado, mas que na verdade não escreve o arquivo do cap.
akraut@lance ~/pcaps $ sudo tcpdump -w pyhole -s 0 "port 6667"
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C17 packets captured
17 packets received by filter
0 packets dropped by kernel
4294966881 packets dropped by interface
akraut@lance ~/pcaps $ ls -la
total 8
drwxr-xr-x 2 akraut akraut 4096 Feb 6 11:50 .
drwxr-xr-x 8 akraut akraut 4096 Feb 6 11:50 ..
akraut@lance ~/pcaps $
Ok, resolvi o mistério. Acompanhe-me enquanto nós desvendamos o TCPDump de Funtoo e o arquivo pcap do Mystery of the Missing.
Eu usei strace para ver o que está acontecendo e as linhas relevantes são:
chroot("/var/lib/tcpdump") = 0
chdir("/") = 0
--- SNIP ---
open("/tmp/lol.wat", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT (No such file or directory)
Então ...
lance ~ # ls /var/lib/tcpdump/
blah blah.cap irc.cap pyhole
Ei, olhe! Todos os arquivos de limite que eu tentei criar!
Depois de dar uma olhada nos flags de uso que o tcpdump é construído por padrão, eu vejo isto:
lance ~ # grep tcpdump /usr/portage/profiles/use*desc
use.local.desc:net-analyzer/tcpdump:chroot - Enable chrooting when dropping privileges
Então, por que é assim? Minha teoria é algo assim:
/var/lib/tcpdump
, depois descarta privilégios de root e começa a capturar. Como resultado, quando especifiquei ./blah
ou blah
, funcionou bem. Mas /tmp/blah
não porque /var/lib/tcpdump/tmp
não existe.
Um excelente recurso de tudo isso é: ao usar o sinalizador suid para instalar o tcpdump SetUID, você pode conceder acesso aos usuários com o grupo tcpdump
sem fornecer acesso sudo ou root. Usos possíveis incluem uma caixa de captura para os engenheiros de rede ou pesquisadores.
Eu só queria que o Gentoo / Funtoo tivesse uma mensagem sobre a instalação que dizia tudo isso.
tl; dr: Gentoo / Funtoo coloca seus arquivos pcap em /var/lib/tcpdump
.
A sintaxe está correta: Eu apenas tentei (embora na porta 80) e ela gerou um arquivo pcap no diretório de trabalho atual, considerando as mesmas opções que você está usando.
Poderia ter algo a ver com o seu diretório pessoal, que você está tentando gravar como root (por causa do sudo)? É possível que você esteja usando diretórios base montados em NFS com raiz-squashing? sudo touch ~akraut/pcaps/foo
?
Você pode tentar escrever o pcap para / tmp / ou algo assim?
Tags networking tcpdump filesystems