(Fedora) SELinux で自動的に起動された LXC コンテナに接続できません。

(Fedora) SELinux で自動的に起動された LXC コンテナに接続できません。

環境:私はLXC(2.0.6)コンテナとSELinuxが有効なFedora 24を実行しています。

質問lxc-attach:Linuxコンテナの設定と起動は、LXCの自動起動機能(lxc.start.auto = 1設定ファイルから)で起動されていることを除いて、すべて問題ありません。コンテナに接続しても同じです。

接続できない自動起動コンテナの場合は、再lxc-stop接続してlxc-startコンテナlxc-attachに直接接続できます。

私が試したこと:提案された解決策を確認しました。エラーレポートこれには、dnfコンテナ-selinux拡張インストールと正しいラベル()をインクルードにcontainer_runtime_exec_t追加することが含まれます。可能な回避策も提案されていますが、まだルートファイルシステムのデフォルトフォルダコンテキストにラベルを追加していません。すべてのコンテナの()。/usr/bin/lxc-*lxc-attachchcon -Rt container_var_lib_t /var/lib/lxc

出力:手動で起動したコンテナに問題なく()を付けることができますがlxc-attach -n name_of_container、システム起動時に自動的に起動するコンテナに貼り付けようとすると、以下のように端末にメッセージが表示されます。

lxc-attach: attach.c: lxc_attach_run_shell: 1325 Permission denied - failed to exec shell

/var/log/audit/audit.logファイルに次のメッセージが表示されます。

type=AVC msg=audit(1484836169.882:2969): avc:  denied  { entrypoint } for  pid=7867 comm="lxc-attach" path="/bin/dash" dev="sda3" ino=10289 scontext=system_u:system_r:unconfined_service_t:s0 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=file permissive=0

コンテナを実行しているプロセスのラベル()を見つけると、次の結果がps -eZ | grep lxc得られます。

system_u:system_r:unconfined_service_t:s0 2794 ? 00:00:00 lxc-autostart

自動的に起動されたコンテナの場合は、次を使用します。

unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6399 ? 00:00:00 lxc-start

手動で起動されたコンテナの場合。

私の質問:私はSELinuxに最初に触れましたが、上記の出力でシステムの起動後にコンテナが実行されているコンテキストがlxc-attach私が実行しているコンテキストとは大きく異なることがわかります(以前のコンテキストはscontext=system_u:...現在のコンテキストの開始中に開始されました)。tcontext=unconfined_u:...上記の監査から.log)。

そのため、誰かに説明を求めなければなりませんでした。どの不一致がこの権限を拒否されますか?そして:この問題を修正できますか?

ベストアンサー1

この場合、あなたは/bin/dash間違ったselinuxコンテキストに関連付けられているか、まったく接続されていないようです。

ここで、lxc-attachはシェルを実行できないと文句を言います。

lxc-attach: attach.c: lxc_attach_run_shell: 1325 Permission denied - failed to exec shell

SELinux avcの拒否は上記の内容を確認するようです。

type=AVC msg=audit(1484836169.882:2969): avc:  denied  { entrypoint } for  pid=7867 comm="lxc-attach" path="/bin/dash" dev="sda3" ino=10289 scontext=system_u:system_r:unconfined_service_t:s0 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=file permissive=0

上記の出来事に注目すべきいくつかのことがあります。

ターゲットファイル()は、SELinuxがフェイルオーバーシナリオに使用する特別なコンテキスト()path="/bin/dash"で終わります。tcontext=unconfined_u:object_r:unlabeled_t:s0イベントの中で、/bin/dashデバイスのinode 10289のイベントはsda3無効なコンテキストに関連付けられているか、コンテキストがまったくありません。

デバイスのinode 10289でコンテキストを試してくださいrestorecon -RvF。完了したら、コンテキストが次以外のものにリセットされていることを確認してください。/bin/dashsda3unconfined_u:object_r:unlabeled_t:s0ls -alZ

おすすめ記事