Android エミュレータの SELinux ポリシー

Android エミュレータの SELinux ポリシー

Google Android エミュレータにはexecheap権限が必要です。それ以外の場合、SElinuxが強制モードにあるときにセグフォルトが発生します。 Androidエミュレータに慣れていない方のために、このエミュレータはqemuの分岐バージョンを使用します。

2つの簡単な解決策は

  • setenforce 0
  • setsebool -P allow_execheap 1

明らかに、これはセキュリティの観点から理想的なものから離れています。また、エミュレータがexecheapを必要としないようにパッチを取得するのに時間がかかることを願っています。

しかし、私の監査ログでは、問題のプロセスは実際にはqemu-system-x86_64-headless「オリジナル」プロセスではなくバンドルバイナリであることを確認しました。したがって、ラベルが異なります。

semanage fcontext --list | grep qemu-kvm
/usr/bin/qemu-kvm                                  regular file       system_u:object_r:qemu_exec_t:s0
ls -laZ /root/android_sdk/emulator/qemu/linux-x86_64
-rwxr-xr-x. 1 root root unconfined_u:object_r:user_home_t:s0 31174856 Aug  1 16:32 qemu-system-x86_64-headless

他の報告では、execheapGPUドライバに問題があると指摘しています。私が実行しているコンピュータにはGPUやiGPUはありません。使用されるVulkanデバイスはSwiftshaderです。

残念ながら、私は初めてSElinuxに触れました。

  • シミュレータ用のカスタムポリシーを作成する必要がありますか?どのように?上記のポリシーでどのように実行しますか?
  • 実行ファイルにタグを付けるだけで十分ですか?どうすればいいですか?
  • execheapをグローバルに有効にするか、SElinuxを許可モードに設定せずにどのように機能させることができますか?

関連情報