AppArmorが文句を言わずにPythonスクリプトでtcpdumpをどのように実行できますか?

AppArmorが文句を言わずにPythonスクリプトでtcpdumpをどのように実行できますか?

この質問の範囲を超えて不便な理由でtcpdumpPythonスクリプトで実行する必要があります。今は電話通話だけしていますが、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

おすすめ記事