OS X10.11之后的SIP和Rootless

什么是 SIP 呢?

SIP全名System Integrity Protection(系统完整性保护),又叫做Rootless保护机制,它是为了保护系统进程、文件、文档不被其它进程修改,不管是否为root user,简单的来说, Rootless 机制限制了 Root 账户的权限, 使其没有了对系统的完全控制权。

SIP技术主要分为文件系统保护、运行时保护、内核扩展签名。
  1. 文件系统保护,主要是通过沙盒机制限制root权限;
  2. 运行时保护,主要就是保护关键进程无法被进程代码注入,挂调试器以及内核调试等;
  3. 内核扩展签名,所有的第三方kext必须被安装到/Library/Extensions,并强制使用签名。
Mac系统自10.11之后,SIP/Rootless权限默认是enable,因而产生的影响有以下几点:
  1. 禁止直接对 /System, /bin, /sbin, /usr 目录的修改(/usr/local 目录除外). 只有通过苹果开发者认证的 app 才有权限对其修改.
  2. 禁止注入系统进程. 某些需要注入系统进程(finder, messages 等等系统级别的进程)的程序, debugger 无法使用了.
  3. 禁止加载内核扩展(kexts), 除非它们被苹果开发者正确的签名
    这些修改最明显的好处就是: 恶意 app 无法通过用户授权的方式从而获得所有系统权限了。
OS X10.11之后的SIP和Rootless_第1张图片
SIP保护目录.png
临时关闭SIP/Rootless权限保护

很多第三方辅助工具(例如:Cocoapods、Homebrew),因为安装时需要写入系统目录(/bin, /sbin,/usr/bin等)或从系统目录执行脚本,故升级到10.11以后,这些工具就无法使用。例如,/usr/bin这个目录被rootless保护后, 安装pod命令需要改为sudo gem install -n /usr/local/bin cocoapods 在这些第三方工具未推出适应OSX 10.11的版本时,有必要临时关闭SIP以确保开发工具的使用。如何临时关闭SIP呢?请看下图:

OS X10.11之后的SIP和Rootless_第2张图片
关闭SIP.png

你可能感兴趣的:(OS X10.11之后的SIP和Rootless)