理解 macOS 磁盘权限与外置驱动器
权限问题可能让你无法访问、修改或推出 Mac 上的外置驱动器。这里说明 macOS 权限在可移除存储上是如何运作的。
你插上一个外置驱动器,能读取文件却无法保存到它。或者一块在你另一台 Mac 上运行良好的驱动器,在这台上却不让你写入。又或者每次你试图访问外置驱动器上的某些文件夹时,都被要求输入密码。
快速答案: Mac 上大多数外置驱动器的权限问题,都能通过启用“忽略此宗卷上的所有权”来解决。在访达中选择该驱动器,按 Command-I,然后在“显示简介”底部勾选那个选框。这会绕过那些在驱动器于不同 Mac 之间转移时变得不同步的所有权标记。仅适用于 APFS 或 HFS+ 驱动器——exFAT 根本没有权限系统。
外置驱动器上的权限问题令人困惑,因为其规则不同于 Mac 的内置存储。macOS 对外置宗卷应用所有权和权限的方式,并不总是符合直觉。
macOS 如何处理外置驱动器上的所有权
Mac 的内置驱动器有一个明确的所有者:你。你的用户账户有一个 ID 号(通常第一个创建的账户为 501),而那个 ID 会被标记在你创建的每一个文件上。
外置驱动器会带着上一台向它写入的电脑所留下的权限标记。如果你在一台你的用户 ID 为 501 的 Mac 上创建了文件,又把驱动器插到另一台你同样是用户 501 的 Mac 上,那么一切都对得上。但如果 ID 不匹配,你就会遇到权限冲突。
这在多台 Mac 之间共用驱动器时很常见,尤其是在每台机器上用户账户设置各不相同的工作环境中。
忽略外置宗卷上的所有权
macOS 为所有权不匹配的问题内置了一个解决方案。在访达中选择外置驱动器,按 Command-I 打开“显示简介”,在底部查找“忽略此宗卷上的所有权”。
启用这个选框后,macOS 会把驱动器上的每一个文件都当作属于当前用户。它彻底绕过了所有权标记。对大多数可移除的 APFS 和 Mac OS 扩展(HFS+)驱动器来说,这是默认设置,这也是为什么你通常不会遇到权限问题。
请注意,这个选框只会在 APFS 和 HFS+ 宗卷上出现。它不会在 exFAT 或 FAT32 驱动器上出现,因为那些文件系统没有原生的权限系统。
如果这项设置被关掉了(这可能在格式化之后或某些 macOS 更新之后发生),权限错误就会开始出现。把它重新打开,问题便会消失。
注意:你需要管理员权限才能更改这项设置。如果选框变灰,请点按“显示简介”窗口底部的锁形图标并输入密码。
APFS 权限与 exFAT 权限
APFS 驱动器带有完整的 POSIX 权限:所有者、群组和其他人对读、写、执行的访问标志。它们还支持访问控制列表(ACL)以进行更精细的控制。这与 Mac 内置驱动器所用的权限系统相同。
exFAT 驱动器根本没有权限系统。每个文件对所有人都可访问。这听起来似乎能消除权限问题,但 macOS 有时会为 exFAT 宗卷合成权限,从而可能产生意料之外的行为。(正在为新驱动器挑选文件系统?请参阅 APFS 与 exFAT:你的 Mac 外置驱动器该用哪种格式。)
当 macOS 装载一个 exFAT 驱动器时,它会把所有权指派给当前用户并应用默认权限。通常这没问题。但如果装载过程遇到错误,或驱动器有文件系统损坏,合成的权限就可能出错。
如果一个 exFAT 驱动器突然变成只读,问题通常是文件系统损坏而非权限。运行磁盘工具的“急救”来检查和修复它。
完全磁盘访问权限与外置驱动器
macOS Ventura、Sonoma 和 Sequoia 比以往版本更严格地强制执行完全磁盘访问限制。这些限制会影响应用程序与外置驱动器交互的方式。
完全磁盘访问权限是一项隐私设置,它控制哪些 App 可以访问你存储的全部内容,包括外置驱动器。没有完全磁盘访问权限,应用程序可能能打开你明确交给它的文件,却无法自由浏览驱动器的内容。
这对推出很重要,因为像 Terminal 这样的诊断工具需要完全磁盘访问权限才能看到所有使用某个驱动器的进程。没有它,lsof 命令会显示不完整的结果。你在驱动器上运行 lsof,看不到任何东西在阻止它,却仍然无法推出,因为真正的阻止者根本不在 Terminal 的视野之内。(我们的面向 Mac 用户的 lsof 命令指南更详细地讲解了这些访问模式。)
在“系统设置 > 隐私与安全性 > 完全磁盘访问权限”中向 Terminal(或你偏好的终端 App)授予完全磁盘访问权限。这能确保你在诊断推出问题时获得完整的图景。
当权限阻止推出时
权限问题通常不会直接阻止推出,但它们会引发间接的推出失败。
如果一个进程试图向你的外置驱动器写入却撞上权限错误,它可能会反复重试,而不是干净地失败。每一次重试都会保持一个文件句柄打开。该进程实际上卡在了一个循环里,既无法完成它的操作,也无法释放驱动器。
你会在备份软件、同步服务,以及像聚焦这样的系统进程上看到这种模式。它们试图向驱动器写入元数据或索引数据,被权限拒绝,然后一直重试。这是泛泛的“磁盘正在使用”错误背后那些沉默的原因之一——其他常见的嫌疑对象请参阅我们的 macOS 磁盘正在使用排查指南。
修复底层的权限问题(通常是启用“忽略此宗卷上的所有权”)也会一并解决推出问题。
修复外置驱动器上的权限
磁盘工具中旧的“修复磁盘权限”功能在 macOS El Capitan 中已被移除。它从来只适用于启动磁盘上的系统文件,所以尽管存在广泛的误解,它对外置驱动器从来都不相关。
对于外置驱动器,最接近的等效做法是手动重置所有权和权限:
sudo chown -R $(whoami) /Volumes/YourDriveName/
sudo chmod -R u+rw /Volumes/YourDriveName/
这会把驱动器上一切的所有权和读写访问权交给你的用户账户。只在个人驱动器上这样做,不要在其他用户需要维护各自权限的共享驱动器上这样做。
若想要更温和的修复,只需如前所述启用“忽略此宗卷上的所有权”。
加密驱动器与权限
如果你的外置驱动器用 APFS 加密进行了加密,你需要加密密码才能装载它。但装载之后,权限会正常运作。
如果加密元数据变得不同步,FileVault 加密的外置驱动器偶尔会出现权限问题。如果你在一个加密驱动器上遇到权限错误,试着锁定(推出)再解锁(用密码装载)该驱动器。这会迫使 macOS 重新建立加密上下文,往往能解决权限异常。
让一切协同运作
权限问题、推出失败和文件系统错误常常相互叠加。一个权限错误导致某个后台进程停滞,这阻止了推出,进而导致不当断开,造成文件系统损坏,又催生新的权限错误。
打破这一循环始于正确推出。当你的驱动器无法推出、而你怀疑牵涉到权限问题时,Ejecta 能辨认出那个停滞的进程并让你干净地退出它。从那里着手,再修复底层的权限问题,让问题不再复发。
外置驱动器上的权限一旦你理解了所有权模型,就比看上去简单。大多数问题靠一个选框就能解决。但当有更复杂的情况发生时,知道该往哪里看会带来天壤之别。
如果你不想每次都动用终端,Ejecta 会准确告诉你是哪个进程在占用硬盘——只需在菜单栏中点击一下即可退出它。
立即购买 — $9.99