Appearance
最近意识到 macOS 上最安全的文件夹是 Documents,其次是 Desktop 和 Downloads,不管是不是沙盒里面的软件,都需要用户明确授予权限才能读写! 而其他文件夹,对于沙盒外的软件,就是裸奔,包括存放着服务器信息和私钥的 ~/.ssh
。
也就是说,要是想搞点事的话,就写一个开发者用的小工具或者直接给破解软件夹点私货,后台偷偷就把 ~/.ssh
文件夹上传了。
这么便利,也难怪大部分国产软件都不上 mac app store。还好,一开始就拒绝所有不上 mas 的国产软件。 其实电脑上的软件,除了 voov(国际版腾讯会议,国内版没有上 mas),确实也没有必须用的国产软件。
没错,国产软件就是有原罪!(大环境因素加上自身节操碎了一地)
为什么 Documents Desktop Downloads 特殊?
那就要从 TCC 说起了。
The Transparent Consent and Control(TCC) system maintains a database of each user's consent in macOS.
就是说 macOS 10.15 之后引入了一个提升安全性的功能,所有软件(包括沙盒之外的)访问用户数据的时候需要用户明确授权。
这几个特殊的文件夹需要用户明确授权才可访问: Desktop, Documents, Downloads, Network Volumes, Removable Volumes
并且可以在 System Preferences.app
的 Security & Privacy > Privacy > Files and Folders
管理授权。
数据库文件路径如下,这些数据库受 SIP 保护,不可读写。但你可以把他们复制到其他目录下然后用 SQLite 浏览器打开。
For all users: /Library/Application Support/com.apple.TCC/TCC.db
For each user: ~/Library/Application Support/com.apple.TCC/TCC.db
沙盒
使用 Xcode 开发 macOS 的软件的时候,可以配置是否将软件运行在沙盒之中。访问 网络、硬件(摄像头、麦克风、USB 插口)、个人数据(日历、位置、联系人)、文件
将有更多的限制。
想要上架 MAS(Mac App Store) 的软件必须要运行在沙盒之中,所以一般可以用是否上 mas 来判断是否沙盒。
或者可以用 codesign 来查看 com.apple.security.app-sandbox
的值判断是否运行在沙盒之中,
sh
codesign -d -v --entitlements - "/Applications/VooV Meeting.app"
沙盒中 | 沙盒外 | |
---|---|---|
Documents | 只能由用户选择 | 用户授权 |
Desktop | 只能由用户选择 | 用户授权 |
Downloads | 用户授权 | 用户授权 |
Pictures | 列出权限即可 | 裸奔 |
Movies | 列出权限即可 | 裸奔 |
Music | 列出权限即可 | 裸奔 |
Network Volumes | 只能由用户选择 | 用户授权 |
Removable Volumes | 只能由用户选择 | 用户授权 |
其他目录 | 只能由用户选择 | 裸奔 |
用户授权就是软件在尝试读取文件的时候系统会跳出确认框:
折腾
既然发现了问题,就免不了又是一波折腾 🙈
- 删不必要的软件
- 清理文件夹权限
Security & Privacy
里授权管理,没必要的就去掉。
去掉所有软件访问 Documents 的权限,只留下 vscode - 把大部分文件从 home 目录移动到 Documents 下
- 清理 vscode 插件
vscode 几乎能访问所有的文件了,所以不可信的插件一定要清理掉 - 换 ssh 私钥
以前为了方便没加密码的要加上,搭配 ssh-agent 一样很方便
检查现有服务器的登录情况,开启更详尽的日志
是被迫害妄想症晚期没错了 🙈
原罪 - 举个 🌰
国产软件的下限再次刷新