我有一个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
可惜我找不到一种方法来映射用户 无特权的容器。如果有人知道,让我知道。
基本上,为主机和容器创建一个公共用户。有什么更好的方法可用吗?
答案 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>
。