Проблема дозволів tcpdump


13

У мене проблеми із запуском tcpdump. Я повинен запустити tcpdump з некореневим користувачем. Шукали в Інтернеті свою проблему і зрозуміли, що мені слід:

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 вимагає привілеїв root, вам доведеться встановити конкретні можливості 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 так, щоб він не працював


Мені вдалося трохи обмежити це та просто використати cap_net_raw,cap_setpcap=ep. Видалення iбуло тому, що моїй програмі не потрібно було розщедритися. Це для користувальницьких двійкових, так ymmv.
Dan

Це також працювало для 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.