私は SElinux を初めて使うので、使い方がよくわかりません。samba 共有 (すでに構成済みで動作中) を使用して Fedora Server を実行し、podman コンテナーを構成して同じディレクトリをマウントしたいと考えています。しかし、SElinux がオンの間は、コンテナーはマウントされたディレクトリにアクセスできません。SElinux をオフにすると ( setenforce 0
)、この問題は「解決」されます。
public_content_rw_t
そのため、現在そのディレクトリで使用してみましたが、まだ動作しません。
# first try
$ semanage fcontext -a -t samba_share_t "/srv/downloads(/.*)?"
$ restorecon -Rv /srv/downloads
# second try
$ semanage fcontext -m -t public_content_rw_t "/srv/downloads(/.*)?"
$ restorecon -Rv /srv/downloads
どちらの場合も、podman コンテナは同じディレクトリにアクセスできません。SElinux がそれを阻止しています (ログ: setroubleshoot[1232603]: SELinux is preventing java from write access on the directory /srv/downloads
)。たとえば、次を使用します: ( rw でpodman exec -it $CONTAINER ls -l /downloads
マウント)。/srv/downloads:/downloads
SElinux でサーバーを実行したいのですが、両方のプロセスが同じディレクトリを使用できるようにするには、何を構成する必要がありますか?
答え1
SELinuxを初めて使う人のために、理解するのに役立つツールが他にもたくさんあります。私は先週、これを見つけました。出発点としては、ここ主に、audit2why とaudit2allow を使用したaudit.logです。setenforce を 0 に設定し、audit.log に対して cp /dev/null を実行し、失敗したコマンド (Permissive モードでは成功しますが、監査ログには記録されます) を実行し、ログを保存して、上記のリンクのように分析します。このプロセスを過去数日間使用して、python サブプロセスを実行する flask/apache api のカスタム ポリシーを作成しました。したがって、具体的な回答ではありませんが、このプロセスにより、私と同じように解決策にたどり着くことができます。
答え2
この問題はフラグを有効にすることで解決しましたsetsebool -P virt_use_samba
。これにより、仮想化されたインスタンス (およびコンテナー) がマウントされたドライブにアクセスできるようになるようです。
古い質問ですが、この回答はインターネット上の 1 か所で見つけたので、より多くの問題が解決する可能性があるため、広めていただけると幸いです。