2013-08-05 5 views
3

tcpdump을 사용하여 네트워크 인터페이스를 통해 흐르는 TCP 헤더를 모니터하고 필터링하는 스크립트 (python + bash)를 만들었습니다. 모든 인터페이스에서 원활하게 작동하지만 ethernet en0 인터페이스의 경우 Mac은 루트 사용자 (sudo)로 tcpdump를 실행해야합니다.sudo를 사용하지 않고 Mac에서 en0 네트워크 인터페이스를 모니터링하는 방법은 무엇입니까?

sudo를 사용하여 실행할 필요가없는 프로그래밍 방식의 솔루션이 있습니까?

wireshark과 같은 도구는 sudo 비밀번호를 요청하지 않고도 할 수 있습니다.

sudo가 필요없는 모든 솔루션은 훌륭합니다.

답변

2

무차별 모드 일 필요가없는 경우 tcpdump를 일반 사용자로 사용할 수 있습니다. 무차별 모드를 비활성화하려면 '-p'옵션을 사용하십시오.

무차별 모드로 인터페이스를 설정해야하는 경우 루트 계정을 활성화하고 su를 통해 루트가 된 다음 스크립트를 계속 실행할 수 있습니다.

su root - 
python myscript.py 

또는

sudo를 기본값으로
su - 
python myscript.py 

그것은 당신이 피할 수 암호 프롬프트 sudo를 염려되는 경우

su Administrator 
sudo su 
python myscript.py 

(관리자라는 관리자 계정을 추정)과 같이 수행 할 수 있습니다 NOPASSWD 옵션을 사용하도록/etc/sudoers 파일을 구성합니다. 암호를 입력하지 않고 일반 사용자 으로 스크립트를 실행할 수 있습니다.

bpf 장치 파일에 다른 사용자의 읽기 권한을 부여 할 수도 있습니다. 참고 :이 테스트하지 않았습니다.

$ ls -l /dev/bpf* 
crw-rw---- 1 root access_bpf 23, 0 Aug 4 22:17 /dev/bpf0 
crw-rw---- 1 root access_bpf 23, 1 Aug 4 22:16 /dev/bpf1 
crw-rw---- 1 root access_bpf 23, 2 Aug 4 22:16 /dev/bpf2 
crw-rw---- 1 root access_bpf 23, 3 Aug 4 22:16 /dev/bpf3 

chmod o+r /dev/bpf* 
+1

OS X에서는 무차별 모드를 켜기 위해 루트 권한이 필요하지 않습니다. * default *에 의해 BPF 장치를 열려면, 기본적으로 권한'rw -------'과 사용자 및 그룹 소유자'root'로 만들어야합니다. Wireshark는'ls -l' 출력에 나타나는 사용 권한과 그룹 소유자를 제공하는 StartupItem을 설치합니다. –

+0

가이를 고쳐 주셔서 감사합니다. – jonschipp

6

내가 sudo는 그것을 실행할 필요가 우회 할 수있는 임의의 프로그램에 해결책이 있습니까?

"프로그래밍 방식"이란 무엇을 의미합니까?

방법 와이어 샤크이이 설치

  1. access_bpf 그룹을 만들고 그것으로 사용자를두고 있다는 것입니다 않습니다;
  2. 은 현재 BPF 장치의 그룹 소유자를 access_bpf으로 변경하는 StartupItem을 설치하고 rw-rw---- (jonschipp의 답변에 따라 ls -l /dev/bpf* 출력)으로 사용 권한을 변경합니다.

그래서 와이어 샤크를 설치하는 사용자는 BPF를 사용하는 프로그램을 실행할 수 있습니다 (OS X에 BPF를 사용 libpcap의를 사용하는 모든 프로그램, tcpdump를하고 Wireshark를 모두 사용 libpcap의) 적어도만큼 (루트로 실행하지 않고 프로그램에 새로운 BPF 장치가 필요하지 않으며 필요에 따라 자동으로 생성되지만 권한은 rw-------이고 사용자 및 그룹 root이 소유합니다.

Wireshark를 설치 한 경우 일반 사용자로 Wireshark (및 TShark와 둘 다 패킷 캡처를 수행하는 데 사용하는 dumpcap 프로그램)뿐만 아니라 트래픽을 캡처 할 수있을뿐만 아니라 예를 들어 tcpdump를 일반 사용자로 실행하고 트래픽을 캡처하십시오.

즉,이를 가능하게 Wireshark를 코드 뭔가 아니다, 그래서 그런 의미에서 "의 프로그램에"아니다, 그것은이를 가능하게하는 Wireshark를 설치으로 설치 뭔가, 그것은 모든을 위해 그것을 할 수 있습니다 프로그램.