系统学习 macOS 学习路径:从 BSD 文件命令到系统、网络与开发维护

版本信息最后核对:2026-10-25

filevault

查看、启用和管理 FileVault 全盘加密,安全处理个人与机构恢复密钥。

补充说明

FileVault 是 macOS 的内置全卷加密。启用后,系统会加密数据卷上的现有文件和后续写入,登录时用账户密码解锁,也可以用个人恢复密钥或机构恢复密钥恢复访问。Apple Platform Security 指出,在 Apple silicon 上密钥由 Secure Enclave 参与保护,系统卷还受签名系统卷(SSV)保护。另一个容易误解的点是:在 Apple silicon 和配备 T2 的 Mac 上,FileVault 关闭时 APFS 卷仍由硬件 UID 保护的密钥加密;较老的 Intel Mac 不能据此推断磁盘已加密。FileVault 增加的是“必须用用户凭据或恢复密钥才能解锁”的保护,因此不能因为关闭状态就认为所有 Mac 的数据都不可直接读取,也不能认为磁盘必然没有加密风险。

日常查询从 fdesetup status 开始,普通用户即可运行;-extended 会显示加密或解密进度以及粗略的剩余时间。fdesetup list 列出可解锁用户,-extended 还能看到用户类型和恢复密钥托管标记;fdesetup isactive 用退出码表达是否启用,适合脚本判断。个人恢复密钥(PRK)每个加密卷只有一份,启用时生成;机构恢复密钥(IRK)基于证书,证书的通用名必须是 FileVault Recovery Key,通常放在 /Library/Keychains/FileVaultMaster.keychain 中,也可用 -certificate 指向 DER 编码的证书文件。

启用方式分立即和延迟两类。立即启用需要可解锁用户的密码,并受安全令牌约束:Apple 官方部署文档说明,能解锁 FileVault 的用户需要安全令牌,Apple silicon 上还要求是卷所有者。延迟启用(-defer)把启用动作推到用户下次登录或注销时,适合批量部署;-forceatlogin 控制用户可取消的次数,-dontaskatlogout 关闭注销时的提示。启用完成前,MDM 可能一直把设备视为“等待配置”,所以排查时要同时看 fdesetup status、showdeferralinfo 和控制台状态。

机构密钥轮换要按“先验证、后替换、最后清理”的顺序做。无论用 MDM 的 RotateFileVaultKey 命令下发新证书,还是在测试机上执行 fdesetup changerecovery -institutional,旧机构密钥都会被新密钥替换。轮换前保留旧私钥的离线副本,确认新密钥能在测试机的恢复模式中解锁,并确认托管或密钥库已经收到新密钥,再逐批推广;在所有设备确认完成前不要销毁旧私钥。APFS 上部分旧私钥参数可能被系统忽略,但操作流程仍应保留回退材料。

恢复模式是最后的本地入口,但也有边界。Apple silicon 机型在恢复模式中提供“启动安全性实用工具”,Intel T2 机型有对应的启动安全性设置;降低启动安全策略会扩大可启动和可加载的软件范围,不应为了绕过某个提示随手修改。要访问加密的数据卷,通常仍需先解锁 FileVault,个人恢复密钥可在登录窗口或 recoveryOS 使用。机构密钥适合组织统一保管,但一旦私钥丢失且用户密码也不可用,设备上的数据同样无法恢复。

影响范围:sudo fdesetup disable 会关闭 FileVault 并解密数据卷,设备失去登录前加密保护;fdesetup remove -user 会移除某个用户的解锁能力,若移除的是唯一可解锁用户,可能直接把自己锁在系统外;fdesetup removerecovery 会删除个人或机构恢复密钥,丢失密码后将无法恢复数据;fdesetup authrestart 会把解锁密钥暂存在内存和部分机型的 SMC 中,man page 明确提示这会降低 FileVault 保护。前置条件:先在测试机验证,准备 Time Machine 或其他独立备份,确认恢复密钥已离线保存或已被 MDM 托管并可读回,保留本地管理员和一个已知可用的解锁用户,机构私钥离线保管。恢复方式:重新启用 FileVault、用 fdesetup add -usertoadd 重新加入用户、用恢复密钥在登录窗口或 recoveryOS 解锁,然后从备份恢复;密钥一旦全部丢失,没有命令可以绕过。

常用示例

# 1. 查看 FileVault 状态;-extended 显示加解密进度和估算时间
% fdesetup status
% fdesetup status -extended

# 2. 列出可解锁用户、用户类型与恢复密钥状态
% sudo fdesetup list -extended
% sudo fdesetup haspersonalrecoverykey
% sudo fdesetup hasinstitutionalrecoverykey

# 3. 在测试机启用 FileVault;恢复密钥输出到受控位置,托管后立即清理
% sudo fdesetup enable -outputplist > /secure/location/filevault.plist

# 4. 延迟启用:用户下次登录或注销时提示,3 次取消后必须启用
% sudo fdesetup enable -defer /var/tmp/filevault-defer.plist -forceatlogin 3
% sudo fdesetup showdeferralinfo

# 5. 增加可解锁用户;需要现有 FileVault 用户的密码或恢复密钥
% sudo fdesetup add -usertoadd alice

# 6. 更新机构恢复密钥;先在测试机按本机 man page 核对参数
% sudo fdesetup changerecovery -institutional -certificate /secure/new-irk.cer

# 7. 验证个人恢复密钥格式;输入内容不要留在命令历史
% sudo fdesetup validaterecovery

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. fdesetup status 显示 FileVault 关闭,是否等于磁盘没有加密?应如何理解?
  2. 轮换机构恢复密钥时,为什么不能在新密钥验证前删除旧私钥?
  3. fdesetup list -extended 显示恢复密钥已托管,但 MDM 控制台查不到密钥,可能是什么原因?
答案
  1. 不等于。在 Apple silicon 和 T2 Mac 上,APFS 卷的加密密钥仍由硬件 UID 保护;较老 Intel Mac 不能据此推断已加密。FileVault 关闭意味着没有用用户凭据或恢复密钥保护启动解锁,应评估并启用,而不是一概认为数据可被直接读取。
  2. 新密钥可能尚未覆盖所有设备,旧私钥仍是忘记密码时的恢复路径;应先在测试机验证新密钥可解锁,再逐批推广,全部确认后才销毁旧私钥。
  3. 本地托管标记可能在密钥成功发送前就显示 Yes。应检查网络签入、MDM 的 FileVault 载荷和托管配置,并在服务器侧确认密钥记录,不能只信本地输出。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令