Podmanに0600権限を持つファイルをマウントする

Podmanに0600権限を持つファイルをマウントする

にファイルをインストールする際に問題がありますpodman。私のファイル権限はありますが、0600コンテナは使用できません。対応する--privilegedオプションまたはボリューム拡散オプションを使用するとz機能します。しかし、私の質問は、次のいずれかのオプションを使用する必要がありますか?それとも別の方法があるかもしれません...

XYの問題を避けるために、このケースを説明します。certbotDNS Cloudflareを使用して証明書を生成したいです。私はCentos 8を使用しているので、docker / podmanを介して行う必要があります。 CerbotにはCloudflareのキーが必要なので、~/.secrets/clodflareパスからcloudflare.iniファイルを作成してコンテナにインストールしようとしています。

ベストアンサー1

最近私が学んだ教訓のいくつかを共有しましょう。私は専門家ではありません。私はあなたが何をすべきかを提案することはできませんが、--privilegedpodmanを使用して実行するときに何が起こるかを説明しようとすることができます:z。たぶんあなたはすでにこれを知っているでしょう。

私はあなたがpodmanルートなしで、podman -vすなわちsudo podman -v。また、~/.secrets/clodflareあなたが所有しており、UIDは1000

あなたの場合、既存のUnix権限(0600または-rw-------)とSELinux(container_file_t、、user_home_t:などfusefs_t)の2つの権限問題があります。

  • UNIX権限

    • コンテナ内では、ファイル/フォルダは次のようrootになります。
    • コンテナのプロセスがによって実行されると、ホストはユーザーによってroot実行されます。したがって、rw-そのフォルダ/ファイルに対する権限があります。私はこれがあなたの場合だと思います。--privileged助けとは何の関係もありません:z

    • コンテナのプロセスが他のユーザー(UIDなど)によって実行されている場合、ホストシステムはUID(デフォルトでは設定に従って)を使用する1234ユーザーによって実行されます。したがって、そのファイルに対してのみ権限があります。コンテナ内(またはホスト)内で所有権を変更するには、たとえば、またはを実行できます。しかし、私はこれがあなたに当てはまらないと思います。101233/etc/subid---1234101233podman unshare chown -R 1234:1234 <path>sudo chown -R 101234:101234 <path>

    • ホスト上のファイルがあなたの所有者ではない場合、コンテナはその設定に従って他の人の所有者になります/etc/subid

    • Googleを検索すると、このトピックに関する詳細情報を見つけることができますpodman namespace

  • SELinux

    • SELinux 対応ホストには SELinux 分離の問題がまだ存在します。
    • を使用して--privilegedSELinuxの分離などを無効にできます。ただし、ファイル/フォルダのラベルを再指定することはありません。 Podmanを実行するたびに、次のように実行する必要がありますpodman -v <host-path>:<container-path> --previleged <image>
    • を追加すると、:zPodmanがファイル/フォルダのラベルを再割り当てできるようになります。君はこれだけすればいい一度ls -Zファイル/フォルダリストを使用すると、前後の違いを確認できますls -Zd。ファイルまたはフォルダのラベルが正しく再割り当てされると、次回はなしでpodman -v <host-path>:<container-path> <image>実行できます。:z--privileged
    • この問題は私が理解するには複雑すぎるので、より詳細に説明することはできません。の説明がpodman runあるマニュアルページが役に立ちます。--privileged-v-security-opt

おすすめ記事