AppArmor가 불평하지 않고 Python 스크립트에서 tcpdump를 어떻게 실행할 수 있나요?

AppArmor가 불평하지 않고 Python 스크립트에서 tcpdump를 어떻게 실행할 수 있나요?

이 질문의 범위를 넘어서는 불편한 이유로 tcpdumpPython 스크립트에서 실행해야 합니다. 지금은 전화 통화만 하고 있는데 subprocess.Popen(['tcpdump', ...)다 괜찮아요. 그러나 pyInstaller와 같은 도구를 사용하여 스크립트를 실행 파일로 패키징하고 루트로 실행하면 다음 오류가 발생합니다.

tcpdump: error while loading shared libraries: libcrypto.so.0.9.8: "failed to map segment from shared object: Permission denied" 

제가 아는 한, 이는 AppArmor의 불만 사항입니다. 이제 tcpdump 호출을 다음으로 쉽게 바꿀 수 있습니다.

subprocess.call(['aa-complain', '/usr/sbin/tcpdump'])
pcap = subprocess.Popen(['tcpdump', ...)
subprocess.call(['aa-enforce', '/usr/sbin/tcpdump'])

이제 두 줄의 정보(불평/강제 모드로 변경에 대한)를 인쇄하고 더 이상 불평하지 않고 tcpdump를 실행합니다.

이 스크립트를 실행하는 사람은 패킷을 캡처하려고 할 때 루트로 실행하므로 이것이 보안 문제인지는 알 수 없습니다. 동시에 위의 내용은 나에게 진부해 보입니다. AppArmor 전문가 여러분, 이것이 이 문제를 처리하는 표준적인 방법입니까?

추신. AppArmor에 대한 빠르고 좋은 소개 링크도 감사드립니다. 처음 접하는 내용이기 때문입니다.

답변1

글쎄요, 아직 탐색하지 않으셨다면, 이것이 시작되어야 합니다:https://help.ubuntu.com/community/AppArmor

관련 정보