最初に私の構成に関する少しの情報:
pool/mydataset
が所有するuser1
で作成されたデータセットここで、pool/mydataset
のファイル/フォルダーにアクセスするためのコンテナーの1つが必要です。私は次を試しました:
user1
を作成しましたpool/lxc/mycontainer/config
を編集して追加しました:
lxc.mount.entry = /pool/mydataset mnt/mydataset none rw,bind 0 0
コンテナを起動すると、データセットはマウントされますが、コンテナ内のls -la /mnt/mydataset
はnobody:nogroup
ではなくuser1:user1
と表示されます。これは、すべてのファイルが読み取り専用であることを意味します。
マウントされたディレクトリで正しいアクセス許可を取得する方法はありますか?
本当にmycontainer
が特権を持たない場合、その所有者はパス/pool/mydataset
にアクセスできない可能性があります。非特権コンテナのユーザーは、コンテナ所有者uidによってホスト上のuidオフセットを持っているため、コンテナ内のuser1
はホスト上のuser1
と同じではありません。
ホスト上のどのユーザーがコンテナを所有しているかはSudo ls -l /pool/lxc | grep mycontainer
で確認できます(/pool/lxc
の権限によってはSudo
は不要かもしれませんが、ls
は安全に実行できますどちらの方法でもルート。今後、アクセス許可が可能であれば、Sudo
を省略します)。たとえば、私は
drwxr-xr-x 4 100000 100000 5 Apr 22 11:37 mycontainer
コンテナの所有者のuidとgidが100000であることを示しています(ユーザーがホストに存在しないため、名前ではなくuidが表示されます)。
/pool/mydataset
の権限をSudo ls -l /pool | grep mydataset
(またはその内容についてはSudo ls -l /pool/mydataset
)でテストします。
ファイルをコンテナ内から書き込み可能にする場合は、mycontainer
内のどのユーザーが/pool/mydataset
に書き込みできるようにするかを確認する必要があります。たとえば、root
上のmycontainer
にはホスト上のuid 100000があり、mycontainer
内のuser1
にuid 1001がある場合(id user1
でテストします内からcontainer)ホストの場合、そのuidは101001になります。
ホスト上のすべてのユーザーに/pool/mydataset
への書き込みを許可して、
Sudo chmod -R o+w /pool/mydataset
(注:これは/pool/mydataset
内に再帰的にアクセス許可を追加します)、またはグループuser1
のユーザーが書き込みアクセス許可を持っていることを確認する(そうでない場合はSudo chmod -R g+w /pool/mydataset
で再帰的に設定します)グループ化するコンテナの所有者user1
Sudo usermod -a -G user1 <username>
(上記の私の場合、ホスト上のユーザーはコンテナを所有していないことがわかったため、最初にuidを持つユーザーとgid 100000を持つユーザーを作成する必要があります
adduser --no-create-home --uid 100000 --disabled-password --disabled-login <username>
もちろん、コンテナ内のuser1
のみに許可を与えたい場合があります。そのため、Host uidでユーザーを作成し、それをホスト上のuser1
グループに追加します。 101001.)
また、核に行き、/pool/mydataset
の所有権をmycontainer
のルートに付与することもできます。
Sudo chown -R 100000:100000 /pool/mydataset
ただし、データにアクセスするホスト上の他のユーザーを混乱させる可能性があります。
それが完了したら、設定したマウントで、必要に応じてmycontaier
内の書き込み許可を許可する必要があります。