Linux 应用沙箱——旧技术的新未来
摘要
文章推荐使用成熟的 Firejail 工具,在 Linux 上限制程序的网络、文件系统及硬件访问,无需等待 Wayland 等新显示技术。
<p><a href="https://lobste.rs/s/k2tj4p/linux_application_sandboxing_old_tech">评论</a></p>
查看缓存全文
缓存时间: 2026/04/22 18:29
# Linux 应用沙箱——面向未来的老技术
来源:https://www.dedoimedo.com/computers/linux-sandbox-firejail-xpra.html
Linux 应用沙箱——面向未来的老技术
更新:2026 年 4 月 22 日
如果你已经猜到这文章要讲什么,恭喜你,你很聪明。其实今天写的东西既不新鲜也不惊艳,过去我已在多篇教程和吐槽里提过。之所以再写,是因为:不久后将发布新的 Ubuntu LTS,届时在 GNOME 桌面会话里很可能无法再用 X11(Plasma 等估计还能用)。这一趋势让我非常不爽,理由很简单——**可用性**(https://www.dedoimedo.com/computers/wayland-fedora-gnome-kde-neon-amd-graphics-benchmark.html)。
有人可能会说:为了未来、为了安全。没错,反对 X11 的主要“论据”就是“恶意程序可以偷键盘”。讽刺的是,只要机器上真有恶意程序,它想干啥都行;最好的防护是别让恶意程序跑起来。更讽刺的是,**十年前**我们就能做极其健壮的软件沙箱,根本无需任何新花活。给你看看。
## Firejail
我早已[评测过](https://www.dedoimedo.com/computers/firejail.html)这货,此处不赘述原理。一句话:它把 Linux 各种隔离机制揉在一起,给不同程序造独立资源空间。举个小例子:
Firejail 可以断网。一条命令就能让程序完全看不到网络,对它来说就像跑在一台没网卡的机器上,而且无需写复杂 profile:
```bash
firejail --noprofile --net=none "程序名"
```
再简单点:
```bash
firejail --noprofile --net=none "浏览器路径"
```
浏览器照样启动,就是上不了网。想把任何程序踢出互联网,一句话搞定。做成启动脚本或桌面快捷方式,随叫随到。
再给你看点更酷的:
无网络
我故意用 `no-net` 启动 PDF 阅读器 Okular,然后点帮助里的“捐赠”按钮,默认浏览器 Firefox 被唤起——但同样没网。灵活又干净。
远不止这些,深呼吸……
Firejail 支持 AppArmor profile、能沙箱 AppImage、限速、黑名单目录、chroot、绑核、限制 D-Bus 接口、独立 DNS/网关(多网卡时想怎么分流都行)、给程序单独 IP(或不给)、禁用声卡显卡、seccomp 过滤器、限制磁盘/内存/CPU、追踪系统调用、沙箱 X11 程序(嗨!)……应有尽有。
再秀一例:Viber,类似 WhatsApp/Telegram 的聊天软件,却没有网页版,无法像 Telegram 那样直接在浏览器里跑。Linux 有官方 AppImage,而 firejail 自带 Viber profile,直接:
```bash
firejail --appimage --private --profile=Viber /home/igor/Applications/Viber/viber.AppImage
```
输出略过,看关键配置片段:
```
caps.drop all
ipc-namespace
netfilter
nodvd
nogroups
nonewprivs
noroot
notv
protocol unix,inet,inet6
seccomp !chroot
...
private-bin awk,bash,dig,sh,Viber
private-etc alternatives,asound.conf,ca-certificates,...
private-tmp
```
桌面程序被关进沙箱:无 root、不能提权、不能嗅探网络、内存隔离。Viber 看不到挂载点,有私有 shell、私有 /etc、私有字体、私有 hosts、私有声卡、私有 tmp、**私有 X11**——这就是所谓“X11 键盘监听”的终极回答。香不香?
还没完。装 firejail 时,Ubuntu 会附赠一堆好东西:
```
firejail firejail-profiles xpra xvfb xserver-xorg-video-dummy …
```
看到亮点没?**Xpra** 就在里面。
## Xpra
老熟人,[神器](https://www.dedoimedo.com/computers/xpra-run-scaled-tutorial.html)。我曾用它给顽固程序开独立缩放实例,不管 HD 还是 UHD,甚至 WINE 程序都能搞定。最香的是:它能给每个程序跑独立的 X11 服务端/客户端,**天然防键盘监听**,本地远程皆可,玩法无限。
GUI
## 现在,合体……
把两样东西串起来:先 firejail 再 Xpra,或者反过来,随你。firejail 的 man 页里本身就调用 Xpra 干这事。你也可以换 Xephyr,我当年[缩放老游戏](https://www.dedoimedo.com/games/reviving/pharaoh-cleopatra-hd.html)(凯撒 III、法老王)就用的它。
这些 X11 时代的宝贝几乎每台 Linux 都自带。用法不算一键式,但真要做,十几分钟就能配好,比重写整套显示协议、让软件全家适配省事多了。老系统新系统都能跑,不挑桌面环境,实现唯一,随时可停用。最坏的情况,也就是有人做个图形配置界面,工作量比“现代” Linux 桌面大重构小几个数量级。
有了这俩工具,Flatpak、snap 能做到的隔离你都能做,**甚至更多**——黑白名单想怎么写就怎么写,不必受限于人家 manifest 里声明的那点权限。确实需要点技术,但真要给仓库里的软件打沙箱,十来分钟足够,无需折腾。
## 结论
我干啥了?吐槽?当然,老恐龙只剩吐槽。但我也觉得好笑:软件开发每隔几年就得“重启”一次,老工具滚蛋,新工具上台,功能却原地踏步——图啥?可能这就是世界规律,不限于 Linux 或 FOSS。可我是 Linux 用户, soonish 我的日常就要被折腾,我得说两句。
如果你还抓不住重点:Linux 用户体验有无数种改进办法,用**老工具**就能搞定,无需大项目。另外,安全话题我奉陪:设计得先解决**真问题**。Linux 可能遇到的一堆破事里,X11 键盘监听连号都排不上。用 meme 话说:“在一切无关紧要的事里,它最无关紧要。”真正重要的是——**用户能不能好好用电脑**。嗯!
就这样,Linux、沙箱、过去与未来,Firejail、Xpra,收工。
干杯。
相似文章
沙盒化令人抓狂
一篇技术博客,讨论实现安全沙盒技术的复杂性与挫败感。
@ghumare64: https://x.com/ghumare64/status/2055329887431393309
深入探讨为何本地编码代理(如Claude Code和Codex)正逐渐转向libkrun而非Firecracker进行沙盒隔离,原因是Firecracker无法在macOS上原生运行。本文还介绍了iii-sandbox,一个基于libkrun构建的开源硬件隔离执行层。
@jerryjliu0: Agent 与文件沙盒是 2026 年的热门方向。这是 @itsclelia 提供的一个巧妙参考实现,向你展示了……
该参考实现展示了如何利用 Rust、LiteParse 和 microsandbox,在本地沙盒中安全运行 LLM Agent,从而处理和分析各类文档。该开源 CLI 工具借助 OpenAI 的 GPT 模型与原生 bash 命令,在隔离环境中执行文件检索与分析任务。
浏览器标签中的类Linux内核 - 深入解析BrowserPod架构
深入解析BrowserPod架构,这是一个基于WebAssembly内核的浏览器内沙箱,完全在客户端运行兼容Linux的应用程序。本文涵盖内核设计、磁盘和网络子系统,以及其在浏览器中运行诸如Claude Code等工具的能力。
不久我们就能终于将 JavaScript 放逐至 ShadowRealm
本文探讨了 TC39 提出的 ShadowRealm 提案,该提案旨在允许在不使用 iframe 或 Web Workers 的情况下,在隔离环境(Realm)中执行 JavaScript,从而改善代码沙盒机制并提升性能。