WebサーバーをホストするLXDゲストを作成し、ドキュメントルートに簡単にアクセスするために、次のことを行いました。
lxc config device add guest sharedhtml disk path=/document/root/ source=/home/$USER/public_html
これは2つのことを行いました。
/document/root/
をpublic_html/
に完全に置き換えました(public-html
が空のため、デフォルトのWebサーバーファイルはすべて削除されます)/document/root
所有権設定を破棄しました。 public_html/
で作成したディレクトリとファイルの所有者はnobody:nogroup
になりました私が理解しているように、これは逆マウントに似ています。ゲストのディレクトリをマウントする代わりに、ホストのディレクトリがゲストに強制的に逆マウントされます。
既存のコンテンツを破壊せずにホストにゲストディレクトリをマウントして、変更がゲストディレクトリの所有権設定を継承するようにするにはどうすればよいですか?
ボーナス:ディレクトリをマウントしているdevice
を削除するにはどうすればよいですか?
作成したエントリを削除するには、次の手順を実行する必要があります。
lxc config device remove sharedhtml
LXDは、この場合に想定されていたとおりのことをしたようです。実行したコマンドは、ホストの/ home/$ USER/public_htmlをコンテナーの/ document/rootとしてコンテナーにマウントするようにLXDに指示します
LXDコンテナはホストとは異なるuid/gidマップを使用して実行されるため、ホストからのファイルの所有権はコンテナ内でレンダリングできず、カーネルはそれらをnobody:nogroupとして表示します。
コンテナー内のパスをホストにマウントするメカニズムはなく、すぐにそのようなものを追加することはまずありません。
とにかく、あなたの場合、おそらくあなたがすべきことは、Webサーバーのファイル用のホスト上にストレージパスを持ち、それをLXDのデバイスディスクエントリとしてコンテナ内の正しい場所にマウントすることです.
次に、ホストのPOSIX ACLを設定して、コンテナのuid/gidの両方がファイルと自分のユーザーにもアクセスできるようにします。
ほとんどの場合、ホスト上のコンテナuidとgidは、コンテナ内の165536 + uidまたはgidになります。それを理解する簡単な方法は、ホスト上のパスを一時的に誰でも書き込み可能にしてから、コンテナ内のパスに何かを書き込み、ホストの所有者として表示される人を確認することです。