Mac读取ntfs文件系统

从Windows系统转到Mac OS X的朋友经常遇到的一个问题就是对ntfs格式移动硬盘的读写问题,这是由于两个操作系统的文件存储结构并不一致所导致的

网上有很多软件帮助Mac系统读写ntfs文件,还有人甚至推荐使用Windows虚拟机,但是其实问题并没有那么复杂,这里记录一种更为简单的处理方式

在Mac OS中,使用mount_ntfs对ntfs文件系统的硬盘进行挂载,但是默认加载方式是只读的,这导致了我们并不能对我们的ntfs移动硬盘进行写入,那么其实,我们只要将mount_ntfs的挂载方式改为读写方式就可以了,具体方法如下:

打开终端

实用工具 -> 终端

在终端中进行如下操作
切换到root身份 (高危! 谨慎操作)

sudo -s
cd /sbin

将系统自带的挂载程序改名

mv mount_ntfs mount_ntfs_orig

新建我们要的挂载脚本并编辑

vim mount_ntfs

将以下内容写入新的脚本

#!/bin/sh
/sbin/mount_ntfs_orig -o rw,nobrowse "$@"

保存退出后,更改脚本权限

chmod a+x mount_ntfs

最后,退出 root 身份

exit

这样之后,Mac就可以欢快的对ntfs格式的硬盘进行读写了,但是由于使用了 nobrowse 参数,这个参数意味着GUI不可见,即硬盘图标不会出现在桌面上,这时可以在 finder 里用 cmd+shift+G 打开跳转, 输 /Volumes 进入所有磁盘目录,找到硬盘盘符

为了方便,可以用 cmd+shift+T 将 /Volumes 保存到 finder 的左侧边栏

补充

在升级了OS X EI Capitan之后,你将会发现在执行 mv mount_ntfs mount_ntfs_orig 的时候提示错误,这是因为OS X EI Capitan全面启用了System Integrity Protection (SIP),这个技术主要限制了root用户的权限,以提升系统的健壮性(所以当你去以root权限更改系统文件的时候,不再被允许了)

好在Mac内置提供了csrutil工具来进行一些SIP的配置,你可以在终端中使用命令查看SIP的状态

$ csrutil status
System Integrity Protection status: enabled

如果想继续上文中的操作,我们需要暂时关闭SIP,而使用csrutil被限制在恢复模式下(Recovery mode),所以我们需要进行如下操作:

重启电脑
启动时按下Command + R,进入恢复模式
实用工具 -> 终端

然后在终端中使用csrutil,最后重启电脑

csrutil disable
reboot

这样我们就暂时关闭了Mac的SIP功能,再去进行上文中的操作了

SIP功能在系统安全方面有很大的提升,建议更改之后重新开启SIP功能

参考

El Capitan 中 SIP 介绍
关于 OS X 恢复功能