tcpdump에 의해 생성된 .pcap 패킷 캡처 파일을 텍스트 형식으로 변환하려고 합니다. .pcap 파일을 변환하거나 tcpdump의 stdout을 텍스트 파일로 ">" 포팅하려고 할 때마다 권한 오류가 발생합니다.
방법 1:
다음을 사용하여 패킷 캡처 파일 생성
sudo tcpdump -i wlan0 -w /var/log/tcpdump/tcpdump-log-06-03-2015.pcap
다음을 사용하여 .pcap 파일 변환을 시도합니다.
sudo tshark -V -r tcpdump-log-06-03-2015.pcap > tcpdump-log-06-03-2015.txt
하지만 다음과 같은 권한 거부 오류가 발생합니다.
bash: tcpdump-log-06-03-2015.txt: Permission denied
방법 2:
다음을 사용하여 패킷 캡처 파일 생성
sudo tcpdump -i wlan0 > /var/log/tcpdump/tcpdump-log-06-03-2015.txt
비슷한 권한 거부 오류가 발생합니다.
bash: /var/log/tcpdump/tcpdump-log-06-03-2015.txt: Permission denied
두 명령을 모두 sudo로 실행하고 있으므로 권한은 문제가 되지 않을 것이라고 생각했습니다.
다음 명령을 실행하여 tcpdump에 대한 의류를 비활성화했습니다.
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.tcpdump
왜 이런 일이 일어나는지 밝혀줄 수 있는 사람이 있나요? 아니면 tcpdump에 대해 읽을 수 있는 텍스트 출력을 생성하는 더 나은 방법을 제안하시겠습니까?
답변1
문제는 명령의 리디렉션 부분이 루트가 아닌 사용자로 실행된다는 것입니다.
따라서 대상 디렉토리를 그대로 유지하려면 해당 부분도 루트로 실행되도록 해야 합니다. 또는 쓰기 권한이 있는 대상 디렉터리를 만들 수도 있습니다.
작동하지 않는 이유를 보여주는 예(결과 파일에 대한 권한 확인):
$ sudo tcpdump -n -tttt -r eth1-2015-04-16-17-01-35.bin > vvvbbb.txt
reading from file eth1-2015-04-16-17-01-35.bin, link-type EN10MB (Ethernet)
$ ls -l vvvbbb.txt
-rw-rw-r-- 1 doug doug 5418673 Jun 2 16:53 vvvbbb.txt
작동하는 방법의 예(결과 파일에 대한 권한 확인):
$ sudo su
# tcpdump -n -tttt -r eth1-2015-04-16-17-01-35.bin >vvvbbb.txt
reading from file eth1-2015-04-16-17-01-35.bin, link-type EN10MB (Ethernet)
# ls -l vvvbbb.txt
-rw-r--r-- 1 root root 5418673 Jun 2 16:57 vvvbbb.txt
# exit
exit
$
작동하지만 터미널에도 뿜어져 나오는 또 다른 방법의 예는 바람직하지 않을 수 있습니다.
$ sudo tcpdump -n -tttt -r eth1-2015-04-16-17-01-35.bin | sudo tee vvvbbb.txt
... delete tons of spew to terminal ...
$ ls -l vvv*.txt
-rw-r--r-- 1 root root 5418673 Jun 2 17:01 vvvbbb.txt
참고: 여기서는 tshark 대신 tcpdump를 사용했지만 tshark가 설치되어 있지 않기 때문입니다.