problème d'autorisations tcpdump

13

J'ai du mal à exécuter tcpdump. Je dois exécuter tcpdump avec un utilisateur non root. J'ai recherché mon problème sur le Web et j'ai compris que je devrais:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump

Cela m'a permis d'exécuter tcpdump avec mon utilisateur, mais j'ai ensuite obtenu:

you don't have permission to capture on that device

sur n'importe quel appareil que j'ai essayé de capturer.

Est également allé un peu de force brute et a fait:

sudo chmod +s /usr/sbin/tcpdump

Cela ne l'a pas fait non plus.

Sivan Sigal
la source
Tcpdump nécessite des privilèges root, vous devrez définir des capacités Linux spécifiques au binaire: $ sudo setcap cap_net_raw, cap_net_admin = eip / usr / sbin / tcpdump
DreamCoder
Je l'ai fait aussi mais je continue de recevoir:tcpdump: eth0: You don't have permission to capture on that device (socket: Operation not permitted
Sivan Sigal
C'est aussi problématique car je ne veux pas changer le code source que j'exécute ... De plus, ce que DreamCoder a suggéré devrait fonctionner mais étrangement ce n'est pas le cas. Quelqu'un a une autre offre?
Sivan Sigal

Réponses:

28

Il est un peu tard, mais je viens d'avoir le même problème. Vous devez donner tcpdumpl'autorisation et la capacité d'autoriser les captures de paquets brutes et la manipulation de l'interface réseau .

Ajoutez un groupe de capture et ajoutez-vous à lui:

sudo groupadd pcap
sudo usermod -a -G pcap $USER

Ensuite, modifiez le groupe tcpdumpet définissez les autorisations:

sudo chgrp pcap /usr/sbin/tcpdump
sudo chmod 750 /usr/sbin/tcpdump

Enfin, utilisez setcappour donner tcpdumples autorisations nécessaires:

sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

Attention, cela permettra à tous les membres du groupe pcap de manipuler les interfaces réseau et de lire les paquets bruts!

Trouvé ici: configurer tcpdump pour fonctionner en tant que non root

Horst
la source
J'ai pu limiter cela un peu et simplement l'utiliser cap_net_raw,cap_setpcap=ep. La suppression du iest dû au fait que mon programme n'avait pas besoin de bifurquer. C'est pour un binaire personnalisé, donc ymmv.
Dan
Cela a également fonctionné pour iftopun programme qui montre l'utilisation du réseau par adresse IP / nom DNS
HeatfanJohn
0

Peut-être que cela pourrait fonctionner. Similaire à ce qui a déjà été publié. Il n'a pas été testé sur Ubuntu.

(utilisez un groupe dont votre utilisateur est membre) chgrp cableshark / usr / sbin / tcpdump

setcap 'CAP_NET_RAW + eip CAP_NET_ADMIN + eip' / usr / sbin / tcpdump

en utilisant getcap / usr / sbin / tcpdump, vous devriez voir / usr / sbin / tcpdump = cap_net_admin, cap_net_raw + eip

Serjan
la source