Kubernetes を使用しており、非 root ユーザーとしてコンテナを実行したいと考えています。
独自の Dockerfile を記述する場合は、、、useradd
をchmod 777
docker で実行できます--user <username>
。
しかし、場合によっては、chmod
' する必要のあるファイルのリストが長くて不明なため、面倒なプロセスになり、時間の経過とともに変化し、実行時にのみ見つかるエラーが発生する可能性があります。
ベストプラクティスはありますか?/var/log
やのようなフォルダーをどのように処理しますか/var/run
? 1 つのオプションは、 touch/mkdir して を使用することですsetfacl
。
最も簡単なのは、 ですchmod 777 -R /var/log
。
しかし、そうするとコンテナは777
ホストにもアクセスできるようになるのでしょうか? コンテナに 1 セットの権限があり、ホストに別の権限がある場合、どのようにマッピングされるのでしょうか?
答え1
使用することはchmod 777
、基本的に決して正しい解決策ではありません。権限を正しく設定する方法を理解してください。権限は、ほとんどの場合、目的を達成するために最小限に抑える必要があります。
それをどうやって行うかは、特定のイメージのコンテキストと、実行しているソフトウェアによって大きく異なります。
しかし、そうするとコンテナ 777 にホスト上のアクセス権も付与されるのでしょうか?
権限を変更するパスがバインド マウントであるか、またはバインド マウントになるかによって異なります。
答え2
これは私自身の質問に関連していると思いました:
オーバーレイ ファイル システムは、下位ディレクトリをマウントし、次に上位ディレクトリをマージされたマウント ポイントに接続します。プロセスがマージされたディレクトリに新しいファイルを書き込むと、新しいファイルは上位ディレクトリに書き込まれます。プロセスが下位ディレクトリの既存のファイルを変更すると、カーネルはファイルを下位ディレクトリから上位ディレクトリにコピーし、プロセスが上位ディレクトリのファイルを変更できるようにします。
したがってchown
、オーバーレイ (上位) ディレクトリはホスト (下位) ディレクトリに影響を与えません。
chmod 777
しかし、他のユーザーがホスト上のオーバーレイ ファイルシステムにアクセスできるようにすることはできると思います。