Linux 应用沙箱——旧技术的新未来

Lobsters Hottest 工具

摘要

文章推荐使用成熟的 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,收工。 干杯。

相似文章

沙盒化令人抓狂

Lobsters Hottest

一篇技术博客,讨论实现安全沙盒技术的复杂性与挫败感。

@ghumare64: https://x.com/ghumare64/status/2055329887431393309

X AI KOLs Timeline

深入探讨为何本地编码代理(如Claude Code和Codex)正逐渐转向libkrun而非Firecracker进行沙盒隔离,原因是Firecracker无法在macOS上原生运行。本文还介绍了iii-sandbox,一个基于libkrun构建的开源硬件隔离执行层。

浏览器标签中的类Linux内核 - 深入解析BrowserPod架构

Lobsters Hottest

深入解析BrowserPod架构,这是一个基于WebAssembly内核的浏览器内沙箱,完全在客户端运行兼容Linux的应用程序。本文涵盖内核设计、磁盘和网络子系统,以及其在浏览器中运行诸如Claude Code等工具的能力。

不久我们就能终于将 JavaScript 放逐至 ShadowRealm

Lobsters Hottest

本文探讨了 TC39 提出的 ShadowRealm 提案,该提案旨在允许在不使用 iframe 或 Web Workers 的情况下,在隔离环境(Realm)中执行 JavaScript,从而改善代码沙盒机制并提升性能。