lxc的文件共享映射和严重安全隐患
在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之间直接共享任何数据。