Ubuntu 下安装 Flash Player(历史):EOL、安全退役与内容迁移

这篇文章原题为《Ubuntu下安装flash player》,发布于 2014 年。它不再是一篇安装教程:Adobe 已于 2020 年 12 月 31 日终止 Flash Player 支持,并从 2021 年 1 月 12 日起阻止其运行 Flash 内容。Adobe 不再提供旧版下载,明确建议卸载播放器,并警告第三方“Flash 下载”常是恶意软件来源。

Firefox 85 已移除 Flash 支持,也没有重新启用的设置。把 libflashplayer.so 复制进当前浏览器配置既不能恢复受支持的 Flash,也会重新引入一个没有安全补丁的旧运行时。本文的当前目标是:安全退役插件,并在权利明确的前提下,把自有或获授权的历史内容迁移到现代格式。

文末保留 2014 年完整原文的惰性归档,其中的安装命令仅是历史证据,绝不能执行。

先决定任务是退役、迁移还是保存

真实需求 合理目标 不应做的事
普通 Ubuntu 工作站上仍残留插件 清点、隔离并通过受支持的软件管理流程移除 安装旧浏览器或从镜像站下载 Flash
你拥有 FLA、源代码和媒体母版 从源项目生成 HTML、Canvas、视频或新的应用 把编译后的 SWF 当作完整源代码
你获授权展示某个 SWF,但暂时无法重写 在隔离预发布环境评估当前 Ruffle,再制定迁移期限 建立公共任意上传播放器或宣称完全兼容
只有受保护、带 DRM、登录或停运服务器依赖的文件 停止,向权利人取得许可、源文件和接口资料 绕过保护、伪造服务器、破解授权或提取受限资产
研究机构必须保留原始行为 由数字保存/安全团队在封闭、一次性环境中取证 在日常联网桌面恢复 NPAPI Flash

拥有文件副本不自动等于拥有公开传播、修改或绕过访问控制的权利。先记录权利人、许可范围、允许的受众和保存依据;不明确时只做哈希与元数据清点,不运行内容。

做不执行内容的证据清单

在授权的本地副本上先找源项目和交付物。下面的命令只列文件,不打开 SWF;legacy-site 是占位目录:

find legacy-site -type f -iname '*.fla' -print
find legacy-site -type f -iname '*.swf' -print
find legacy-site -type f -iname '*.flv' -print
find legacy-site -type f -iname '*.as' -print

文件名本身可能含客户、课程或内部项目名称,分享清单前脱敏。对批准的单个样本记录哈希、类型与元数据;以下是 Ubuntu/GNU 示例:

sha256sum -- legacy-site/example.swf
file -- legacy-site/example.swf
stat -- legacy-site/example.swf

不要把未知 SWF 双击打开,也不要上传到在线“转换器”。至少建立以下证据表:

项目 要记录的证据
权利 所有者、许可证、传播范围、访问控制与到期日
源资产 FLA、ActionScript、图片、字体、音频、视频、构建说明与版本
运行依赖 ActionScript 版本、外部 URL、后端接口、共享对象、摄像头/麦克风需求
当前行为 关键场景、输入输出、尺寸、帧率、音画同步、保存与错误状态
数据风险 用户标识、凭据、遥测、上传、第三方域名与保留期限

源目录应只读备份;在副本上工作,并为每次转换保留工具版本、输入哈希和输出哈希。

在 Ubuntu 上安全退役旧插件

现代 Firefox 已没有重新启用 Flash 的开关。先用只读命令查看可能的包与用户插件目录,不要假设旧文章中的路径一定存在:

apt list --installed 2>/dev/null | grep -Ei 'flash|pepper'
find "$HOME/.mozilla/plugins" -maxdepth 1 -type f -print

包名因 Ubuntu 版本和历史安装方式而异。对软件包管理器找到的精确包名,先查看模拟移除计划:

apt remove --simulate exact-package-name

exact-package-name 必须替换为刚才确认的单个包;不要使用通配符,不要复制别人系统的包名,也不要在未审查依赖变化时执行真实移除。实际变更应走当前 Ubuntu 的受支持管理流程,并保留事务日志与回滚方案。

如果证据明确表明旧文章曾手工复制唯一的用户级文件,可先做可逆隔离,而不是删除整个配置目录:

plugin="$HOME/.mozilla/plugins/libflashplayer.so"
test -f "$plugin" || exit 1
test ! -L "$plugin" || exit 1
quarantine=$(mktemp -d "$HOME/flash-retirement.XXXXXX")
mv -i -- "$plugin" "$quarantine"/
printf '%s' "$quarantine"

这段命令只移动核对过的精确文件,并打印隔离位置;它不处理系统软件包。验收现代浏览器、清点快照和业务替代方案后,再按批准的保留策略处理隔离副本。不要把它放回浏览器,也不要用旧浏览器验证“是否还能运行”。

同时移除来源不明的 Flash 浏览器扩展,更新到受支持的 Ubuntu 与浏览器,并检查启动器、容器、旧用户配置和企业镜像。停止条件包括:路径是符号链接、文件所有者异常、包管理器计划移除无关软件、仍有业务声称依赖插件,或没有可恢复备份。

优先从源项目迁移

Adobe 说明 SWF 是已渲染的压缩交付格式,许多源数据无法重新导入;因此优先找 FLA 与原始素材,不要依赖反编译。标记为“Protect from Import”的内容更是明确停止条件,本文不提供绕过方法。

内容形态 优先迁移路径 验收重点
时间轴动画,有 FLA/素材 在受支持工具中复制到 HTML5 Canvas 或重新制作 SVG/CSS 动画 画面、时间轴、字体、缩放、降级内容
线性视频或音频 从授权母版转成浏览器支持的媒体,并保留高质量母版 音画同步、字幕、文字稿、码率与色彩
表单、课程或信息应用 用语义化 HTML、CSS 和 JavaScript 重建 键盘操作、焦点、屏幕阅读器、错误恢复
游戏或复杂 ActionScript 从源代码移植到现代 Web 或受支持引擎 输入、存档、物理、网络、性能和确定性
只有 SWF 先评估权利与保存价值;仿真只是过渡 功能缺口、外部依赖、真实性与退役日期

Adobe Animate 的自动 HTML5 Canvas 转换会注释 ActionScript,并可能移除视频、3D 变换或其他不受支持功能;“转换成功”不等于语义等价。必须逐场景测试并人工重写交互。

Ruffle 只能是有边界的过渡层

Ruffle 是开源 Flash 模拟器,不是 Adobe Flash Player,也不是访问控制或 DRM 绕过工具。其官方兼容性页面持续显示 ActionScript 1/2 与 3 的语言和 API 仍有缺口;百分比会变化,不能当作单个作品的验收结果。

只有同时满足以下条件时才评估 Ruffle:

  • 你拥有内容或有明确的运行与发布授权。
  • 文件哈希固定,来源可信,未要求绕过导入保护、许可证或身份验证。
  • 在隔离预发布域使用官方项目的固定稳定版本,记录来源、版本和校验值。
  • 默认阻断不必要的外部网络、页面脚本桥接、摄像头、麦克风、剪贴板和本地文件访问。
  • 不接受公众上传 SWF,不把不可信内容与登录态、管理后台或敏感域放在同一来源。
  • 有迁移负责人、兼容性测试、监控、回滚和明确的移除日期。

即使项目使用 Rust 与 WebAssembly,也不能据此把任意 SWF 视为可信。模拟器、浏览器、GPU 驱动和作品自身代码都仍是攻击面;保持依赖更新,并把新版本当作需要重新验收的变更。

必须保存原始行为时的隔离边界

若有合法保存任务且现代迁移无法还原关键行为,应由安全/保存团队审批一次性实验环境。旧 Flash 运行时不得回到普通工作站或可访问互联网的浏览器。

最低边界包括:无网络、无共享剪贴板、无共享主机目录、非管理员账户、只读输入副本、干净快照、限定输出通道、执行日志和任务后销毁。SWF 试图访问外部域、登录、支付、摄像头、麦克风、本地文件或未知原生扩展时立即停止。不要伪造授权服务器,也不要通过代理绕过地理、账户或订阅限制。

隔离降低暴露面,但不会让未修补运行时变安全。若关键行为依赖停运服务器,应保存协议文档、截图、录像和日志等证据,而不是重新连接未知基础设施。

发布现代替代版本

线性媒体应使用原始授权母版,不从受保护 SWF 偷取素材。一个最小 HTML 视频结构可以是:

<video controls preload="metadata" poster="poster.webp">
  <source src="feature.webm" type="video/webm">
  <source src="feature.mp4" type="video/mp4">
  <track kind="captions" src="captions-en.vtt" srclang="en" label="English">
  <p>Download the authorized video from the publisher's archive.</p>
</video>

提供经人工校对的字幕与文字稿、键盘可用控件、暂停动画方式、清楚的语言与版权信息。Canvas 动画还需要 DOM 中的等价文本和语义化控件;不要把所有交互封在不可访问的画布内。

发布前移除旧 <object>/<embed> 入口和诱导安装 Flash 的文案,保留清楚的迁移说明与联系渠道。默认不采集点击、设备指纹或观看历史;若确有分析需求,先定义目的、最小字段、同意与保留期限,不把旧 Flash 参数无审查地搬到新页面。

验证、切换与回滚

检查面 通过条件
权利 输入、字体、音乐、视频、代码和公开范围均有记录
安全 无 Flash 插件、无旧浏览器要求、无任意上传、外部请求在允许列表内
功能 关键场景、输入、音画、保存、错误与离线降级符合基线
可访问性 键盘、焦点、字幕、文字稿、替代文本与减弱动画均验收
隐私 不携带旧凭据/标识;数据最小化、同意和删除路径明确
运维 版本固定、构建可复现、监控、负责人、回滚和退役日期齐全

先在不带真实用户数据的预发布环境上线。保留旧页面的只读证据和新版本的可回滚发布物,但不保留可公开调用的旧播放器。切换后监控错误和外部请求;若出现越权访问、内容差异、安全告警或辅助功能退化,回滚到安全的“内容暂不可用”页面,而不是恢复 Flash。

停止条件

  • 权利人、许可证、受众或修改权限不明确。
  • 任务要求移除导入保护、绕过 DRM/登录/付费墙或恢复他人的停运服务。
  • 只能从第三方站点取得 Flash Player、旧浏览器或不明转换器。
  • SWF 来源未知、哈希变化,或请求不必要的网络、设备和本地权限。
  • 只有 SWF 却宣称可以完整恢复 FLA、源代码或原始素材。
  • 没有隔离环境、回滚、负责人、验收基线或现代化期限。

这些情况应暂停并升级给权利、安全、保存或无障碍负责人。安全的失败状态是说明内容暂不可用并提供合法联系途径,不是降低浏览器安全性。

参考资料

历史原文归档

以下是 source_export 中 2014 年可见正文的完整惰性归档。原文没有行尾空白,也没有需要脱敏的隐私、凭据、推荐或跟踪参数,因此未作替换。围栏内的安装包名、解压和插件复制命令均已过时,只是历史证据,绝不能执行。


去官网下载对应的flash软件包,我下的是install_flash_player_11_linux.x86_64.tar.gz,放在桌面的。

安装用命令(文件名和地址你对应自己的做修改):

tar xvf Desktop/install_flash_player_11_linux.x86_64.tar.gz

此时Mozilla Firefox尚不能使用flash,执行以下命令:

cp libflashplayer.so ~/.mozilla/plugins

Enjoy it!

Leave a Reply