Проблема с разрешениями tcpdump

13

У меня проблемы с запуском tcpdump. Я должен запустить tcpdump с пользователем без полномочий root. Искал в сети мою проблему и понял, что должен:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump

Это позволило мне запустить tcpdump с моим пользователем, но потом я получил:

you don't have permission to capture on that device

на любом устройстве я пытался захватить.

Также пошел немного грубой силы и сделал:

sudo chmod +s /usr/sbin/tcpdump

Это тоже не делало.

Сиван Сигал
источник
Для Tcpdump требуются привилегии суперпользователя, вам нужно установить определенные возможности Linux для двоичного файла: $ sudo setcap cap_net_raw, cap_net_admin = eip / usr / sbin / tcpdump
DreamCoder
Сделал это тоже, но я продолжаю получать:tcpdump: eth0: You don't have permission to capture on that device (socket: Operation not permitted
Сиван Сигал
посмотреть здесь. askubuntu.com/questions/39281/…
g_p
Это также проблематично, потому что я не хочу менять исходный код, который я запускаю ... Кроме того, что DreamCoder предложил, должно работать, но, как ни странно, это не так. У кого-нибудь есть другое предложение?
Сиван Сигал

Ответы:

28

Уже немного поздно, но у меня была такая же проблема. Вам необходимо дать tcpdumpразрешение и возможность разрешать необработанный захват пакетов и манипулирование сетевым интерфейсом .

Добавьте группу захвата и добавьте себя в нее:

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

Далее, измените группу tcpdumpи установите права доступа:

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

Наконец, используйте, setcapчтобы дать tcpdumpнеобходимые разрешения:

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

Будьте осторожны, это позволит всем из группы pcap манипулировать сетевыми интерфейсами и читать необработанные пакеты!

Нашел здесь: Настройте tcpdump для работы без полномочий root

Горст
источник
Я смог немного ограничить это и просто использовать cap_net_raw,cap_setpcap=ep. Удаление было из-за того, iчто моя программа не нуждалась в форке. Это для пользовательского двоичного файла, так что ymmv.
Дан
Это также работает для iftopпрограммы, которая показывает использование сети по IP-адресу / DNS-имени
HeatfanJohn
0

Возможно, это может сработать. Подобно тому, что было опубликовано уже. Это не было проверено на Ubuntu.

(используйте группу, членом которой является ваш пользователь) chgrp wireshark / usr / sbin / tcpdump

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

используя getcap / usr / sbin / tcpdump вы должны увидеть / usr / sbin / tcpdump = cap_net_admin, cap_net_raw + eip

Сержан
источник