无法访问与主机共享的lxd容器中的文件

时间:2019-03-22 04:39:06

标签: chown lxd

我有一个lxd容器,名为master。我发现它的根可以在以下位置找到:

/var/lib/lxd/containers/master/rootfs/home/ubuntu/

因此,我将文件夹tars转移到了该地址。请注意,tars有两个文件。

现在,我知道tars的用户ID和组ID为root。另一方面,容器中每个其他文件的用户ID和组ID为166536

因此,对于文件夹和文件,我做了sudo chown 166536 <file/folder name>来更改用户ID,并做了sudo chown :166536 <file/folder name>来更改组ID。

一旦这样做,我希望可以从容器tars访问master,但这没有发生。谁能告诉我我想念什么?


这是一种方法,我在reddit上找到了:

  

是的,这就是答案,使用无特权的容器运行   无法查看LXD主机上的权限,因此显示为   没人:没人。从某种程度上讲是愚蠢的,因为您可以将文件夹挂载到   容器并查看其中的文件。

     

为以后提供参考,对于有此问题的任何人,这是步骤   我做了(可能不是正确的,但是可以用)

sudo mkdir /tmp/share
adduser subsonic --shell=/bin/false --no-create-home --system --group --uid 6000 (this is a "service account")
sudo chown -R subsonic: /tmp/share
lxc exec Test -- /bin/bash
mkdir /mnt/share
adduser subsonic --shell=/bin/false --no-create-home --system --group --uid 6000 (important that the uid is the same)
exit
lxc stop Test
lxc config edit Test (add the line security.privileged: "true" right bellow config: save and exit)
lxc start Test
lxc config device add MyMusic MyLibrary disk source=/tmp/share path=/mnt/share
lxc exec Test -- /bin/bash
ls /mnt/share/ (note that the subsonic user is there)
exit
     

可惜我找不到一种方法来映射用户   无特权的容器。如果有人知道,让我知道。

基本上,为主机和容器创建一个公共用户。有什么更好的方法可用吗?

1 个答案:

答案 0 :(得分:0)

打开容器并执行

whoami

您将得到结果:

root

因此,当前用户是root,而不是ubuntu。话虽如此,我将文件夹发送到的地址是错误的。当前地址是var/lib/lxd/containers/master/root/。发送文件夹后,检查uid / gid(类似于165536)。通过以下方式更改uid:

sudo chmod 165536 <folder-name>

并通过以下方式提供帮助:

sudo chmod :165536 <folder-name>

完成后,我们确定容器用户root将能够访问这些文件。

或者只需一步sudo chmod 165536:165536 <folder-name>