El Capitan 中 SIP 介绍

简介: El Capitan 中 SIP 介绍

http://havee.me/mac/2015-10/system-integrity-protection-on-el-capitan.html


这两天大家纷纷将 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 目录,那么你需要


  1. 重启进入 Recovery mode
  2. 打开 Terminal.app,输入 csrutil enable --without fs
  3. 重启至正常系统下,打开 Terminal.app,安装 homebrew
  4. 再次重启至 Recovery mode
  5. 打开 Terminal.app,输入 csrutil enable
  6. 重启


如果想安装第三方的 kext,那么建议装在目录 /Library/Extensions/ 下。


二. 黑苹果 Clover 用户


这里只说 Clover 用户,你需要配置你的 Clover ,加入如下代码


<key>RtVariables</key>
<dict>
    <key>CsrActiveConfig</key>
    <string>0x11</string>
</dict>


RtVariablesSMBIOS 同级,如下图



其中 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


十六进制值为 13CsrActiveConfig 值为 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


参考:

目录
相关文章
|
存储 安全 开发工具
oss加密存储
阿里云OSS为数据安全提供多种加密机制,包括服务器端的SSE-S3(AES-256透明加密)、SSE-C(用户管理密钥)和CSE-KMS(结合KMS进行密钥管理)。此外,OSS支持客户端加密SDK和HTTPS传输加密,确保数据在传输和存储时的安全。通过ACL、Bucket策略和访问密钥身份验证,实现权限控制与身份验证,全方位保障用户数据的安全性和隐私。用户可按需选择适合的加密方式。
775 2
|
4月前
|
存储 缓存 固态存储
SSD固态硬盘使用指南:提升速度与延长寿命的技巧
固态硬盘(SSD)以其高速读写和流畅体验受到用户青睐,但合理使用与维护才能充分发挥其性能并延长寿命。本文详解SSD工作原理、优化技巧及注意事项:开启TRIM功能、避免碎片整理、保持闲置空间、管理虚拟内存、关闭不必要服务、启用AHCI模式等。同时建议减少频繁写入、定期检测健康状态、更新固件,并通过数据备份和散热管理进一步延长SSD寿命。掌握这些方法,让SSD始终高效稳定运行。
SSD固态硬盘使用指南:提升速度与延长寿命的技巧
|
7月前
|
人工智能 运维 架构师
Serverless + AI 让应用开发更简单,加速应用智能化
Serverless + AI 让应用开发更简单,加速应用智能化
208 5
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
10月前
|
传感器 人工智能 监控
数字孪生与灾害预测:提升应急响应能力
本文探讨了数字孪生技术在灾害预测和应急响应中的应用,通过实时监测、灾害模拟及应急响应优化,提高预警准确性与响应效率。以数字孪生北江为例,展示了其在防洪中的实际成效,展望了未来技术发展的广阔前景。
|
存储 Prometheus 监控
Java后端服务的监控与日志管理
Java后端服务的监控与日志管理
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
278 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
|
关系型数据库 MySQL 测试技术
探索MySQL间隙锁的奥秘
MySQL中的间隙锁(Gap Lock)是一种锁机制,用于在多个事务中保护数据的一致性。它主要用于防止并发事务插入新数据或者修改已有数据时,导致其他事务读取到不一致的结果。
探索MySQL间隙锁的奥秘
|
开发工具 C++ 开发者
Qt Quick Image探秘:从底层原理到高级应用(一)
Qt Quick Image探秘:从底层原理到高级应用
466 0
|
Android开发
android毛玻璃效果
android毛玻璃效果
350 0