OpenBSD 6.2如何同时运行多个X服务器?实现Firefox与通用环境隔离
在OpenBSD 6.2上运行多个X服务器实现环境隔离
当然可以在OpenBSD 6.2上同时跑多个X服务器,而且完全能用Ctrl+Alt+F*组合键在它们之间切换,刚好能满足你把通用环境和Firefox隔离开的需求。下面一步步来操作,很容易上手:
1. 先搞清楚虚拟终端和X服务器的对应关系
OpenBSD里,第一个启动的X服务器默认会占ttyC1(对应快捷键Ctrl+Alt+F1),第二个会绑定ttyC2(Ctrl+Alt+F2),以此类推。当然你也可以手动指定要绑定的终端,不过默认规则足够咱们用了。
2. 启动第一个通用用途的X服务器
这就是你平时用的日常环境,比如登录到第一个虚拟终端(ttyC1)后,直接运行:
startx
只要你的.xinitrc已经配置好了常用的桌面环境(比如fvwm、XFCE这些),第一个X服务器就会正常启动,你该干嘛干嘛就行。
3. 启动专属Firefox的隔离X服务器
接下来按Ctrl+Alt+F2切换到第二个虚拟终端(ttyC2),登录你的账号,然后咱们创建一个专门的X启动配置文件,比如叫.xinitrc-firefox,内容就只留启动Firefox的命令:
exec firefox
然后用xinit命令指定这个配置文件,启动第二个X服务器:
xinit ~/.xinitrc-firefox -- :1 vt02
这里解释一下参数:-- :1表示这是编号为1的X服务器(第一个默认是:0),vt02指定绑定到ttyC2终端。等Firefox启动后,这个X环境里就只有浏览器,完美实现隔离——就算浏览器被攻破,也碰不到第一个X服务器里的其他程序和数据。
4. 在两个X环境间切换
完全没问题!按Ctrl+Alt+F1就能切回你的通用X环境,按Ctrl+Alt+F2就回到Firefox的专属环境,切换起来非常丝滑。
可选:进一步强化隔离(追求极致安全的话)
如果想要更严谨的防护,你还可以:
- 专门创建一个普通用户账号来跑Firefox,比如
useradd -m firefoxuser,切换到这个用户再启动第二个X服务器,从权限层面进一步隔离。 - 利用OpenBSD自带的沙箱机制,在启动Firefox时加上相关参数,或者在
.xinitrc-firefox里配置更严格的环境限制。
内容的提问来源于stack exchange,提问作者Hessnov




