在lxc中,可以利用mount bind指定guest可以访问某些host的路径。例如:

lxc.mount.entry = /home/shell /var/lib/lxc/{vmname}/rootfs/home/shell none defaults,bind 0 0

注意,/home/shell是你希望共享的主机路径,/var/lib…/shell是映射到的目标路径。

这个工作的基础原理,是在虚拟机启动的时候,自动执行mount,添加一条bind映射,将host的路径挂到guest可以访问的路径里去。

由此,我发现了一个lxc在文件共享时的严重bug。

user@guest:~$ mkdir -p ttt/123
user@guest:~$ cd ttt/123
user@host:~$ mv /var/lib/lxc/{vmname}/rootfs/home/user/ttt/123 .
user@guest:~/ttt/123$ cd ..
user@guest:(unreachable)/user$ ls -l

好了,现在guest在host的~user/目录下,host上本来不应当被看到的东西全被看光光了。

更严重的是,如果此时sudo成root,在host中可以以root的身份做任何事情。

结论:暂时来说,不要在host和guest之间直接共享任何数据。