web-dev-qa-db-ja.com

データと所有権を破壊せずにLXDゲストディレクトリをマウントする

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を削除するにはどうすればよいですか?

1
Oxwivi

作成したエントリを削除するには、次の手順を実行する必要があります。

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になります。それを理解する簡単な方法は、ホスト上のパスを一時的に誰でも書き込み可能にしてから、コンテナ内のパスに何かを書き込み、ホストの所有者として表示される人を確認することです。

1
stgraber