当我们想删除Mac自带的一些Apps的时候:比如国际象棋之类的。(如果直接删除,Mac会提示你这是系统组件之类的。)你可能会搜索到下面类似的操作手法:
cd /Applications/
sudo rm -rf Chess.app/
然而,即是使用sudo
你也并不能删除掉Mac自带的Apps。依然会提示你没有操作权限。给人的感觉就像Mac还有凌驾于 sudo
之上的一层更高级的权限控制。
当然,如果你听说过rootless
,那么,就是这个家伙了。
苹果从 OS X El Capitan 10.11 系统开始使用了 Rootless 机制,可以将该机制理解为一个更高等级的系统的内核保护措施,系统默认将会锁定 /system、/sbin、/usr 这三个目录。
关于rootless,大家自行补充。这里我们来手动关闭rootless,然后删除Mac自带的Apps.
1. 重启Mac, 并按住Command + R, 进入macOS实用工具
2.点击<实用工具> -> <终端>
3.终端输入 csrutil status. 可以查看到rootless的开启和关闭状态。
4.终端输入 csrutil disable. 关闭rootless
5. 重启系统
重启之后,再执行sudo rm -rf Chess.app/
就可以删除Mac自带的一些App了。
当然,删除之后建议重新开启rootless.操作步骤和关闭rootless一样,只是使用csrutil enable
代替 csrutil disable
命令即可。
另一类由内核保护导致的问题就是brew install安装软件的时候报权限问题,比如brew install mysql,会报/usr/local没有写权限之类的。这时候即使更改local文件夹的操作权限也没有用,只能关闭系统内核保护,然后再:
$ sudo chown -R $(whoami) /usr/local
修改权限就可以了