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는 바이너리로 설정 한 특정 리눅스 기능을해야합니다, 루트 권한이 필요합니다 : $ 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
Sivan Sigal


이것은 내가 실행중인 소스 코드를 변경하고 싶지 않기 때문에 문제가됩니다 ... 또한 DreamCoder가 제안한 것이 작동하지만 이상하게 작동하지 않습니다. 다른 제안이 있습니까?
Sivan Sigal

답변:


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

또한 iftopIP 주소 / DNS 이름으로 네트워크 사용률을 보여주는 프로그램 에서도 작동했습니다
HeatfanJohn

0

아마도 이것이 효과가있을 것입니다. 이미 게시 된 것과 유사합니다. 우분투에서 테스트되지 않았습니다.

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가 표시됩니다


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.