# 信任与安全

FlatPark 的整个模式都是重新打包官方下载产物，而不是重新构建它们。下面准确说明这对你安装的内容意味着什么。

## 仅使用 extra-data

FlatPark 会在安装时下载**厂商自己的发布产物**，并将其封装为 Flatpak。你运行的是官方 binary，而不是 FlatPark 重新构建的版本。当厂商发布的是 **AppImage** 时，FlatPark 会离线解包其末尾附带的文件系统——AppImage 只被读取、绝不执行，也不涉及 FUSE。

有些软件包包含少量厂商下载产物之外的内容，例如 wrapper 脚本，或 Flatpak runtime 没有提供的库（比如托盘图标库）。共享的支持库来自 FlatPark 公开的 [`flatpark/prebuilt`](https://github.com/flatpark/prebuilt) repo，由 GitHub Actions 从固定的源码构建。这些只是应用外围的打包支撑，不会替换或修改厂商的 binary。

少数有人需要的应用没有官方 Linux 版本。对这些应用，由公开的 `flatpark/<app>-release` 仓库严格按上游的方式构建，不做修改、符合上游的许可，软件包在安装时像其他下载一样下载这个发布。

开源应用的进程中不会被注入任何代码，它们的 bug 反馈给上游。闭源应用偶尔需要一个适配才能让某个功能在 sandbox 中工作（例如 `LD_PRELOAD` shim）。适配要经过审核，应用页面会显示出来，应用说明中会准确写明它是什么、为什么需要。

## 固定并签名

每个发布版本都在 manifest 中按 `sha256` 和大小固定，你的 Flatpak 客户端下载文件时会校验这两项。即使厂商悄悄更换了某个 URL 背后的文件，变更也**不会**传到你这里：安装或更新会失败，直到新文件经过检查并重新固定。

新版本每天检查两次；如果开发者的发布工作流会通知 FlatPark，几分钟内就能发现。每个新版本都会被下载、固定校验和，并按安装时的方式解包一遍；只有解包成功，才会自动合并并发布。每次更新都是仓库里一条公开的提交。

发布的 repo **使用 GPG 签名**，客户端会在安装和更新时验证该签名。

## 严格的 sandbox

FlatPark 倾向使用仍能让应用正常工作的最少 `finish-args`。只有在应用主要功能需要、或者不给就要用户做大量 override 时，`--filesystem=home`、在主机上运行命令这类宽泛的权限才会在审核后默认授予。每个应用页面都会列出其确切权限，附有通俗易懂的风险标签，并用颜色标出有风险的权限，让你能在安装前了解应用可以访问哪些内容。

应用并非绝对需要的功能**默认保持关闭**。如果应用获得更宽泛的权限后可以使用更多功能，其页面会记录用于授权的 `flatpak override` 命令，让选择权留在你手中——请参阅[flatpak override](../users/override.md)。

<span id="packaging"></span>

## 打包改动

每个应用页面的**打包方式**一栏（在权限下方）标有四个打包级别之一，说明这个软件包在厂商构建之外（或对厂商构建本身）做了什么，与它获得的权限分开标示：

- **原样**——按厂商发布的原样运行。启动脚本最多设置一个环境变量或启动参数。
- **有适配**——在应用旁边补充了东西，但没有改动应用本身：Flatpak runtime 缺少的库或工具、字体，或预设的设置，比如关掉在 Flatpak 里无法工作的应用内更新器。
- **有改动**——改变了厂商构建的运行方式：向应用进程注入代码（`LD_PRELOAD` 库）、增加或修改厂商构建中的文件，或在首次启动时运行厂商的安装器、但替换了其中某些部分或改动了安装结果。只有闭源应用可以有改动；开源应用如果需要这样做则不予收录，因为应当在 upstream 修复。
- **隔离降低**——应用可以在沙箱之外、在你的系统上执行命令，或在关闭其自带的内部沙箱（例如 Chromium 的沙箱）的情况下运行。应用页面会写明具体是什么、为什么。

不放入厂商软件包中在 Flatpak 里根本无法工作的部分——例如 setuid 的沙箱辅助程序、`pkexec` 更新器、文件管理器扩展——不算作改动。应用或它自己的安装器自己做的事也不算，比如首次启动时把 Windows 安装器原样运行进 Wine 前缀。安装器运行时替换了其中某些部分就算改动：thinkorswim 和 IBKR Desktop 运行厂商安装器时用了替身 `df` 让它接受沙箱环境，它们的页面会写明。

## 社区软件包不代表认可

FlatPark 是独立项目，**与其打包的应用没有关联**。应用在此出现并不代表其厂商认可该软件包，除非应用自己的页面明确说明。每个软件包都会链接到 upstream 源码和网站，供你自行核实来源。

## 验证你安装的内容

- 查看应用页面上的**权限**面板。
- 通过 **Source** 和 **Website** 链接前往 upstream。
- 通过已签名的 remote 安装（请参阅[配置 FlatPark](../users/setup.md)）；客户端会自动验证签名。