macOS Mojave 加入了新的文件保护机制,应用程序访问某些目录时需要获得授权方能访问。比如 Moeditor 在访问 ~/Pictures/
下时会访问到 照片图库.photoslibrary
,这时会提示「“Moeditor” 想访问您的照片。」,若不允许,则访问时会报错 Operation not permitted
,因此推测其手法和 SIP 的机制类似。
目前,我们仍不知道如何自定义被保护的目录,如果您知道欢迎留言或前往 如何自定义被 macOS Mojave 限制访问的目录? – 知乎 回答。但是,我们仍然可以用一些比较 trick 的方法来保护我们的密钥。
我们注意到,~/Pictures/照片图库.photoslibrary
是被保护的目录,那么我们可以在这个目录下建立一个子目录来存放我们的敏感信息,然后通过软链接链接回原本的位置。
mkdir ~/Pictures/照片图库.photoslibrary/ProtectedDirs
mv ~/.ssh ~/Pictures/照片图库.photoslibrary/ProtectedDirs
ln -s ~/Pictures/照片图库.photoslibrary/ProtectedDirs/.ssh ~/
这样,只有拥有照片访问权限的应用程序才能访问到我们的 SSH 密钥。
这个功能如果能够被扩展,用户将能够控制特定的应用程序的文件访问权限,macOS 的安全性将会更加远远领先其它操作系统。
Windows 有这个功能,在 Windows defender 的反勒索保护里,能自由选择受保护的文件夹,只需要点鼠标,不需要输入命令。Linux的桌面好像没有这个功能?