この質問の範囲を超えて不便な理由でtcpdump
Pythonスクリプトで実行する必要があります。今は電話通話だけしていますが、subprocess.Popen(['tcpdump', ...)
すべて大丈夫です。ただし、pyInstallerなどのツールを使用してスクリプトを実行可能ファイルとしてパッケージ化し、rootとして実行すると、次のエラーが発生します。
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'])
2行の情報(文句を言う/強制モードに変更するため)を印刷し、文句を言わずにtcpdumpを実行します。
このスクリプトを実行している人は、パケットをキャプチャしようとするとルートとして実行されるため、これがセキュリティの問題であるかどうかはわかりません。同時に、上記の内容は私に陳腐に見えます。 AppArmorの専門家は、これがこの問題を処理する標準的な方法ですか?
PS。 AppArmorへの迅速で良い紹介リンクもありがとうございます。初めて触れる内容だからです。
答え1
さて、まだ探索していない場合は、これを開始する必要があります。https://help.ubuntu.com/community/AppArmor