タイトルに謝罪、セットアップは実際には非常に簡単です。ホストにはoli
という名前のユーザーと、oli
が読み書きできるディレクトリ/media/steve/incoming
があります。その中に、ルートの下で実行されている特権LXCコンテナーがあります。 /media/steve/incoming
は、次のように/incoming/
としてコンテナーにマウントされます。
lxc.mount.entry = /media/steve/incoming incoming none bind 0 0
コンテナ内には、www-data
として実行されているWebサーバーがあります。 /incoming/
に書き込むことができる必要があります。
ここに私のオプションは何ですか?いくつかのアイデアを考えることができますが、それらはかなり深刻な欠点を持っているか、それらを実装する方法がわかりません:
コンテナー内でrootとして実行するようにデーモンを変更することもできますが、そうではありません。ルートにファイルを奇妙に書き込みます(ホスト上でroot:oli
- ownedとして出てきます)。
Container -www-data
をマップして、ファイルシステムにHost -oli
特権を持たせることはできますか?これにより、ホストへのアクセスが許可されますか? oli
は非特権アカウントではありません。それは本当のダメージを与えることができます。
コンテナ内の誰でも/ incomingに書き込むことができ、Host -oli
からのアクセスのように見えるようにバインドマウントできますか?
ここで何か助けがありますか?
ACLは、usernameuserid番号ではなく。
ファイルの属性内でユーザーID番号に変換されます。
ファイルシステム上でcontainer-www-data
をHost-oli
特権にマッピングできますか?これにより、ホストへのアクセスが許可されますか? oli
は非特権アカウントではありません。本当のダメージを与えることができます。
ホストで次のコマンドを実行して、lxc
コンテナーのwww-data
ユーザーが/incoming
フォルダーに書き込みできるようにします。
$ Sudo chown oli /media/steve/incoming
$ Sudo setfacl -m u:www-data:rwx /media/steve/incoming
/media/steve/incoming
は、lxc
コンテナの/incoming
にバインドされています。
/media/steve/incoming
の所有者は既にoli
によって所有されています。
したがって、ホストのoli
は直接書き込むことができ、コンテナのwww-data
ユーザーも直接書き込むことができます。
また、setfacl
コマンドがホストに存在しない場合、次のコマンドでインストールできます。
$ Sudo apt-get install acl
ホストのwww-data
とコンテナーのwww-data
は、差ユーザーID番号を使用できるため、コンテナの/ media/steve/incomingを共有できます。次のようなwww-dataユーザーID。
最初に、コンテナ上のwww-data
のuserid番号を取得します。
$ cat /etc/passwd | grep "^www-data:" | awk -F ":" '{print $3}'
その後、コンテナにwww-data
、www-data
のuserid
という名前のユーザーがいる場合、番号が表示されます。次に、ホストでaclを使用してファイル属性を次のように設定します。
$ Sudo setfacl -m u:<got_number_above>:rwx /media/steve/incoming
その後、コンテナで動作します。
ACLの詳細なヘルプは FilePermissionsACLs から取得できます。