先说问题
由于 macOS 原生是支持写权限的,但是原生的写权限因为版权或其他技术原因,苹果官方默认没有打开,即使通过一些方案打开了,写入也变得很不稳定。
首先使用官方的挂载写权限解决方案是:
- 将
/sbin/mount_ntfs
移动到/sbin/mount_ntfs.orig
- 使用root权限编写
/sbin/mount_ntfs
。root权限可能需要进入恢复模式使用csrutil disable
关闭系统的完整性保护。 - 编写内容是:
1 |
|
- 然后就可以进行愉快地读写了。
但是,以上的方式打开写权限后,写入 NTFS
分区的文件都会变成灰色,以至于macOS下就不能再操作了,需要使用 xattr -r -d com.apple.FinderInfo .
指令来将文件夹下的文件进行属性设置,比较麻烦。
曲线救国
这时要祭出来开源的力量了。github上有一个开源的项目是 osxfuse,这个项目旨在提供第三方文件系统的挂载操作等权限。优点是有的,他提供的对ntfs的读写功能经测试,是比较稳定的,而且也可以设置替换系统官方的自带挂载。缺点就是它好像没使用缓存,读写速度都非常慢。
首先需要做的就是安装osxfuse和ntfs-3g。安装方式使用homebrew就可以:
1 | brew cask install osxfuse |
然后就是替换原生的 mount_ntfs
程序了。当然,这个第三方的挂载程序需要root权限以及关闭系统完整性保护,所以如果你对你的电脑安全有苛刻的要求的话,不建议折腾NTFS读写了,可以左转exFAT。
替换方式也比较简单。
1 | sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig # 将原生的挂载程序备份 |
编写半自动脚本
我们如果偶尔还需要切换回官方原生的挂载程序的话,我自己当然很懒每次都敲这么多命令,于是在装好ntfs-3g后写了段bash脚本。这段可以套在function扔进 .bash_profile
文件的结尾,也可以单独写一个 ntfs
的文件放入 /usr/local/bin
文件夹下然后 chmod a+x /usr/local/bin/ntfs
使用。
1 |
|
用法:
1 | ntfs on # 切换到ntfs-3g挂载模式 |
忠告:记得在替换
mount_ntfs
原来的文件之前,做备份!!!!!