Estou tentando capturar tráfego de dentro de um namespace de rede e visualizá-lo no Wireshark no host como um usuário sem privilégios. Para fazer isso, estou executando tcpdump
dentro do namespace de rede de destino e gravando a captura em um pipe nomeado /tmp/fifo
que pode ser acessado pelo host.
Quando tento visualizar esse tráfego no Wireshark no host executando wireshark -k -i /tmp/fifo
, recebo a mensagem de erro:
Couldn't run dumpcap in child process: Permission denied
A execução ls -l /bin/dumpcap
gera as permissões -rwxr-xr-- 1 root wireshark
, o que explica por que dumpcap
não pode ser executada pelo usuário que não está no wireshark
grupo.
Como o usuário está efetivamente apenas lendo bytes de um pipe, não são necessários privilégios ou capacidades de root. Eu poderia adicionar o usuário ao wireshark
grupo, mas o dumpcap
binário tem capacidades que eu preferiria não conceder. Alternativamente, eu poderia remover capacidades dumpcap
e torná-lo executável por todos, o que, em um breve teste, funciona, mas pode apresentar dumpcap
falhas inesperadas, já que foi projetado para ser executado com essas capacidades.
Existe uma maneira mais direta de atingir meu objetivo?