diskutil 是查看 macos 加密卷状态的唯一可靠工具:apfs 卷用 diskutil apfs list,corestorage 卷用 diskutil cs list;locked: no 表示密钥已缓存,可直接挂载;启动卷 filevault 需在恢复模式下用 diskutil apfs unlockvolume 解锁。

如何用 diskutil 查看加密卷宗的当前状态
MacOS 加密卷宗(APFS 加密卷或 CoreStorage 加密宗卷)的状态不能只靠访达判断,diskutil 是唯一可靠入口。运行 diskutil apfs list(APFS)或 diskutil cs list(旧式 CoreStorage)可看到每个卷的 FileVault 状态、加密层级、是否已解锁等关键字段。
常见误判:访达里显示“已上锁”但 diskutil 显示 Locked: NO,说明该卷虽未挂载,但加密密钥已驻留系统钥匙串——此时只需 diskutil mount 即可挂载,无需输入密码。
- APFS 卷优先查
diskutil apfs list;若输出中无Encryption字段,说明未启用加密 - CoreStorage 卷(如旧版 FileVault2 全盘加密)必须用
diskutil cs list,否则看不到逻辑卷组(LVG)和逻辑卷(LV)的加密绑定关系 -
Locked: YES不等于“被锁定”,而是指卷未挂载且密钥未缓存;若同时出现Passphrase Required: YES,才真正需要手动输入密码
如何安全地解锁、挂载与卸载加密卷宗
直接双击挂载可能失败,尤其当卷宗来自外置设备或密钥未同步到钥匙串时。应分步执行:
- 先确认设备标识符:
diskutil list | grep -A 5 "MyEncryptedVolume"找到类似disk2s1的标识 - 尝试无密码挂载:
diskutil mount disk2s1—— 若返回Volume MyEncryptedVolume on disk2s1 mounted,说明密钥已就位 - 若提示
Could not mount - error -69842,则需显式解锁:diskutil unlockVolume disk2s1 -passphrase "your_password" - 卸载前务必先弹出:
diskutil eject disk2s1,而非仅umount,否则可能残留内核级挂载点导致下次解锁失败
注意:-passphrase 参数明文传参有历史记录泄露风险,生产环境建议省略该参数,让 diskutil 启动交互式密码输入。
如何用 hdiutil 操作加密磁盘映像(.dmg/.sparseimage)
diskutil 对磁盘映像支持有限,真正管用的是 hdiutil。它能创建、验证、挂载、压缩、转换各类加密映像,且对密码策略控制更细。
- 挂载加密 DMG:
hdiutil attach -stdinpass MySecret.dmg(输入密码后自动挂载) - 验证映像完整性与密码正确性(不挂载):
hdiutil verify -stdinpass MySecret.dmg,成功返回 0,失败返回 1 - 创建 AES-256 加密稀疏映像:
hdiutil create -type SPARSE -encryption AES-256 -agentpass -size 10g Secret.sparseimage,其中-agentpass触发 GUI 密码框,避免终端回显 - 转换非加密映像为加密版:
hdiutil convert Unlocked.dmg -format UDSB -o Encrypted.dmg -encryption AES-256 -agentpass
坑点:hdiutil attach 默认启用 noautoopen,即挂载后不自动在访达中打开窗口,需加 -autoopen 才可见;而 diskutil mount 无此行为差异。
为什么 FileVault 全盘加密无法用 diskutil unlockVolume 解锁
FileVault 加密的是启动卷(通常是 disk1s1 或 disk2s1),但它走的是系统级预启动认证流程,不是普通卷宗的运行时解锁机制。试图对启动卷执行 diskutil unlockVolume 会报错 Error: -69842: The given disk is a booter disk or a core storage logical volume group。
- 启动卷的解锁只能发生在登录界面(用户密码即解密密钥)或恢复模式下用
diskutil apfs unlockVolume+resetPassword工具重置密钥 - 恢复模式中,
diskutil apfs list显示的FileVault: Yes表示已启用,但对应卷仍为Locked: YES,直到你用diskutil apfs unlockVolume并输入用户密码才变为Locked: NO - 不要混淆
diskutil cs unlock(已弃用)和diskutil apfs unlockVolume(仅限 APFS 启动卷在恢复模式下)
最易忽略的一点:APFS 加密卷的“解锁”本质是把密钥注入内核密钥环,不是传统意义上的“打开容器”。一旦解锁成功,同一 session 内多次 mount 不再要密码——这个行为不像 .dmg 那样每次挂载都重新校验。










