[转载]El Capitan 中 SIP 介绍
这两天大家纷纷将 OS X 系统升级到了 El Capitan,然后发现,一些注入的工具无法使用了,某些系统目录无法使用了,第三方未签名的 kext 无法加载了,问题一堆堆的。这是因为,Mac OS X 在 10.11 中全面启用了 System Integrity Protection (SIP) —— 系统完整性保护技术。
SIP 技术主要是用来限制 root 用户的权限,以提升系统的健壮性。
具体哪些目录受到保护,可以查看文件
/System/Library/Sandbox/rootless.conf
不被保护的列表存储在
/System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths
Mac 提供了内置 csrutil
配置来进行一些 SIP 的配置。在默认情况下,SIP 是开启状态,你可以用一下指令查看
$ csrutil status
System Integrity Protection status: enabled
可配置项如下,字面意思:
Apple Internal
Kext Signing
Filesystem Protections
Debugging Restrictions
DTrace Restrictions
NVRAM Protections
一. 白苹果用户
上面已经说过,Mac 提供了内置的 csrutil
工具来让用户进行一些配置,不过,你需要重启进入到 Recovery mode (Cmd + R on boot) 下进行操作。
csrutil 的一些常用命令
csrutil clear # 清除 SIP 用户配置,即开启默认的 SIP
csrutil enable # 开启 SIP
csrutil disable # 禁用 SIP
csrutil status # 查看当前 SIP 配置
关于 csrutil enable
可用参数为
csrutil enable --no-internal --without kext --without fs --without fs --without debug --without dtrace --without nvram
譬如说,如果你需要某系统目录的读写权限,譬如 homebrew 全新安装的时候,需要创建 /usr/local
目录,那么你需要
- 重启进入 Recovery mode
- 打开 Terminal.app,输入
csrutil enable --without fs
- 重启至正常系统下,打开 Terminal.app,安装 homebrew
- 再次重启至 Recovery mode
- 打开 Terminal.app,输入
csrutil enable
- 重启
如果想安装第三方的 kext,那么建议装在目录 /Library/Extensions/
下。
二. 黑苹果 Clover 用户
这里只说 Clover 用户,你需要配置你的 Clover ,加入如下代码
<key>RtVariables</key>
<dict>
<key>CsrActiveConfig</key>
<string>0x11</string>
</dict>
<key>RtVariables</key>
跟 <key>SMBIOS</key>
同级,如下图
其中 CsrActiveConfig 的值 0x 后跟的是十六进制,Clover 中我们完全开启的值是 0x77,其中 77 转化为两进制为 01110111。
对于 01110111,每一位开启 SIP 的特定功能,从右至左 8 个位置我们以 B0-B7 表示:
- B0: 允许加载不受信任的 kext
- B1: 解锁文件系统限制
- B2: 允许 task_for_pid()调用
- B3: 允许内核调试
- B4: Apple 内部保留位,值为 1 等效于
csrutil enable
- B5: 解锁 DTrace
- B6: 解锁 NVRAM
- B7: 允许设备配置
如此,我们很清楚了,如果我们只想加载修改的或第三方的 kext,只需 B0 于 B4 位置值为 1,则整个两进制值为 00010001,用 bc 命令行工具进行任意进制转换
$ echo "obase=16; ibase=2; 00010001"|bc
11
转化为十六进制为 11,则 CsrActiveConfig 值为 0x11。
如果要同时解锁 kext 与 fs 呢,00010011 --> ?
$ echo "obase=16; ibase=2; 00010011"|bc
13
十六进制值为 13,CsrActiveConfig 值为 0x13。
为了有助于我们的理解,看下表所示
Configration | N/A | NVRAM | Dtrace | internal | Debug | PID | FS | Kext | HEX | Clover |
---|---|---|---|---|---|---|---|---|---|---|
csrutil enable --no-internal | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | 0x00 |
csrutil enable | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 10 | 0x10 |
csrutil enable --without kext | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 11 | 0x11 |
csrutil enable --without fs | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 12 | 0x12 |
csrutil enable --without debug | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 14 | 0x14 |
csrutil enable --without dtrace | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 30 | 0x30 |
csrutil enable --without nvram | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 50 | 0x50 |
csrutil disable | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 77 | 0x77 |
csrutil disable (no internal) | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 67 | 0x67 |
原链接:http://havee.me/mac/2015-10/system-integrity-protection-on-el-capitan.html
[转载]El Capitan 中 SIP 介绍的更多相关文章
- El Capitan 中 SIP 介绍
http://havee.me/mac/2015-10/system-integrity-protection-on-el-capitan.html 这两天大家纷纷将 OS X 系统升级到了 El C ...
- 【Xamarin挖墙脚系列:关闭 OS X El Capitan 中 SIP 安全设置功能】
比如需要修改内核配置文件: com.apple.Boot.plist 那么我们需要解锁权限. 禁止SIP模式,那么就可以修改此文件了. 在 OS X El Capitan 中有一个跟安全相关的模式叫 ...
- Matlab 2013b 在El Capitan 中无法使用问题解决
更新了mac的操作系统到El capitan, 结果发现Matlab打不开了,每次都弹出一个Java error的窗口.现实如下内容 java.lang.NullPointerException at ...
- [转]Mac OS X El Capitan(10.11)显示隐藏文件命令失效解决方法
在Mac全新的系统El Capitan中,原先的显示系统中所有的隐藏文件的指令似乎失效了,只有重启以后才能显示,其实还有一个更简单的办法: 先在终端输入: defaults write com.app ...
- Mac OS X El Capitan系统完整性保护System Integrity Protection (SIP)
http://blog.csdn.net/yulimin/article/details/49992031 引言:前段时间经历了XCode编译器代码被注入的事件后,这次 Mac OS X El Cap ...
- 0802_转载-nn模块中的网络层介绍
0802_转载-nn 模块中的网络层介绍 目录 一.写在前面 二.卷积运算与卷积层 2.1 1d 2d 3d 卷积示意 2.2 nn.Conv2d 2.3 转置卷积 三.池化层 四.线性层 五.激活函 ...
- EL表达式中fn函数 (转载)
JSTL 使用表达式来简化页面的代码,这对一些标准的方法,例如bean的getter/setter方法,请求参数或者context以及 session中的数据的访问非常方便,但是我们在实际应用中经常需 ...
- Mac制作U盘系统(OS X El Capitan)教程
前言部分 重装过Mac OS X系统的人应该都深有体会,通过自带的重新安装 Mac OS X功能恢复系统(开机时按Command+R) 要耗费10几个小时才能完成(请求苹果国外服务器),但如果通过U盘 ...
- 纯window下VMware 安装 OS X El Capitan 原版映像【未完待续】
一.所需软件1.下载OS X El Capitan 10.11.2 15C50链接:http://pan.baidu.com/s/1skuLgAx 密码:u2jf 2.下载VMware Worksta ...
随机推荐
- 简单的学习心得:网易云课堂Android开发第五章SharedPreferences与文件管理
一.SharedPreferences (1)SharedPreferences能够用来保存一些属于基本数据类型的数据. (2)保存数据,删除数据都是由SharedPreferences的内部接口Ed ...
- git推送本地分支到远程分支
场景 有时候我们开发需要开一个分支,这样可以有效的并行开发. 开分支有两种方式: 一种是在远程开好分支,本地直接拉下来; 一种是本地开好分支,推送到远程. 远程先开好分支然后拉到本地 git chec ...
- 虚拟机环境下安装ESX不能安装虚拟系统解决方案
在虚拟机环境(ESX.workstation等)下安装ESX或workstation等虚拟机,在虚拟机上再安装操作系统,会提示“虚拟系统不能启动,直到你配置了外部虚拟机(vmware esx in a ...
- [转]Oracle 12c多租户特性详解:PDB 的创建、克隆与维护
转自:http://chuansong.me/n/443660447865 PDB 的创建和访问 在使用 dbca 建库时,创建数据库之前,可以保存一下创建脚本,分析其具体执行过程.以自定义方式创建名 ...
- WPF 自定义CheckBox样式
自定义CheckBox样式,mark一下,方便以后参考复用 设计介绍: 1.一般CheckBox模板太难看了,肯定要重写其中的模板 2.模板状态为未选中状态和选中状态,设置为默认未选中就好了. 默认状 ...
- [原创]下拉框控件react-native-modal-dropdown更新历程
前言 不知不觉从今年9月发布第一版控件到现在已经快3个月了 过去不断从开源社区索取,一直一直想着有机会一定要回报
- Windows 7安装软件时无法将注册值写入注册表的处理方法
1. 我们来确认一下,有没有安装什么软件把注册表给封了.如杀毒软件,防火墙等.把这些软件关了之后,再安装软件试试:如果不行,就把杀毒软件卸载了,再安装软件试试. 2. 更改组策略设置 步骤: 开始-运 ...
- 【原】让H5页面适配移动设备全家 - 前端篇 - PPT
7月份在部门内给设计中心的同事们带来<让H5页面适配移动设备全家 - 设计师篇 - PPT>的分享,在视觉和交互稿上提出页面适配的建议及提升页面体验的好处,促进前端和设计双方更好的合作,同 ...
- 理解HTML语义化
1.什么是HTML语义化? <基本上都是围绕着几个主要的标签,像标题(H1~H6).列表(li).强调(strong em)等等> 根据内容的结构化(内容语义化),选择合适的标签(代码语义 ...
- Markdown的使用---现学现用
Markdown 是一种轻量级的标记语言,它的的优点很多,在这就不重复说了,最吸引人的应该是它清新简洁的界面,并且语法简单易学.最为常用的语法不会很多,用多了便自然而然的记住了. 可选工具 网上说如果 ...