我正在玩 LXD 容器,但无法完全理解隔离发生了什么。这是我的场景:
- 创建一个 16.04 容器
launch ubuntu:16.04 mycontainer
- 在其中安装firefox
lxc exec mycontainer /bin/bash
并apt install firefox
- 创建一个与我的主系统用户同名的用户
adduser myuser
- ssh-copy-id 到该用户
vi /etc/sshd_config
以允许使用密码进行 ssh,然后从主会话ssh-copy-id myuser@mycontainer-ip
- ssh -X 进入容器并启动 firefox
ssh -X myuser@mycontainer-ip
和firefox
如果我的主会话中没有打开 Firefox,则会弹出一个孤立的 Firefox:无法访问我的主会话文件、没有插件等...
但是,如果 Firefox 已经在我的主会话中运行,则从容器中的 ssh -X 会话启动 FF 会打开另一个未隔离的 FF 窗口并以我的主用户身份运行(使用我的插件、访问文件等... )。
怎么了 ?
我在 lxd 的 github 上打开了一个错误报告,Stéphane Graber 给了我答案:这是Firefox 的一个功能,可以通过
--no-remote
开关关闭。所以当然LXD 没问题!引用 Stéphane 的话:
se https://github.com/lxc/lxd/issues/3049
因此,
firefox --no-remote
从容器启动会阻止 Firefox 在我的主会话中打开新窗口。