vấn đề quyền tcpdump


13

Đang gặp sự cố khi chạy tcpdump. Tôi phải chạy tcpdump với người dùng không root. Tìm kiếm trên web cho vấn đề của tôi và tìm ra tôi nên:

sudo setcap cap_net_admin=eip /usr/sbin/tcpdump

Điều đó cho phép tôi chạy tcpdump với người dùng của mình nhưng sau đó tôi nhận được:

you don't have permission to capture on that device

trên bất kỳ thiết bị nào tôi đã thử chụp.

Cũng đã đi một chút vũ phu và đã làm:

sudo chmod +s /usr/sbin/tcpdump

Điều đó cũng không làm điều đó.


Tcpdump yêu cầu quyền root, bạn sẽ phải đặt các khả năng Linux cụ thể thành nhị phân: $ sudo setcap cap_net_raw, cap_net_admin = eip / usr / sbin / tcpdump
DreamCoder

Cũng vậy nhưng tôi vẫn nhận được:tcpdump: eth0: You don't have permission to capture on that device (socket: Operation not permitted
Sivan Sigal


Điều này cũng có vấn đề vì không muốn thay đổi mã nguồn mà tôi đang chạy ... Ngoài ra, những gì DreamCoder đề xuất nên hoạt động nhưng thật lạ là nó không hoạt động. Bất cứ ai có một đề nghị khác?
Sivan Sigal

Câu trả lời:


28

Hơi muộn một chút, nhưng tôi cũng gặp vấn đề tương tự. Bạn cần phải cho tcpdumpphép và khả năng để cho phép chụp gói thôthao tác giao diện mạng .

Thêm một nhóm chụp và thêm chính mình vào nó:

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

Tiếp theo, thay đổi nhóm tcpdumpvà đặt quyền:

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

Cuối cùng, sử dụng setcapđể cung cấp tcpdumpcác quyền cần thiết:

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

Hãy cẩn thận, điều này sẽ cho phép mọi người trong nhóm pcap thao tác các giao diện mạng và đọc các gói thô!

Tìm thấy nó ở đây: Cấu hình tcpdump để hoạt động như không root


Tôi đã có thể hạn chế điều này một chút và chỉ cần sử dụng cap_net_raw,cap_setpcap=ep. Việc loại bỏ ilà vì chương trình của tôi không cần rẽ nhánh. Đây là cho một nhị phân tùy chỉnh, vì vậy ymmv.
Dan

Điều này cũng hoạt động cho iftopmột chương trình cho thấy việc sử dụng mạng theo địa chỉ IP / tên DNS
HeatfanJohn 13/07/19

0

Có lẽ điều này có thể làm việc. Tương tự như những gì đã được đăng. Nó chưa được thử nghiệm trên Ubuntu.

(sử dụng một nhóm mà người dùng của bạn là thành viên) chgrp wireshark / usr / sbin / tcpdump

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

sử dụng getcap / usr / sbin / tcpdump bạn sẽ thấy / usr / sbin / tcpdump = cap_net_admin, cap_net_raw + eip

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.