sip是macos内核级强制访问控制机制,锁定/system、/usr(不含/usr/local)、/bin、/sbin、/private/etc等路径及预装apple应用,通过com.apple.rootless属性和rootless.conf实时校验,禁用需在恢复模式执行csrutil命令。

系统完整性保护(SIP)不是简单的“开关”,而是 macOS 内核级的强制访问控制机制。它不依赖用户账户权限,也不受 root 密码影响——哪怕你以 root 身份运行 sudo rm -rf /System,系统也会直接拒绝并提示 “Operation not permitted”。这是因为 SIP 在内核启动早期就加载策略,通过扩展属性(com.apple.rootless)和配置文件(/System/Library/Security/rootless.conf)标记受保护对象,并在每次文件访问、进程注入或内核模块加载时实时校验。
受保护的核心区域有哪些
SIP 锁定的是操作系统运行所依赖的“不可变基座”,主要包括:
-
/System:全部子目录,包括
/System/Library/Extensions(kext 存放处)和/System/Library/CoreServices(即使禁用 SIP,部分路径仍只读) -
/usr(不含
/usr/local):系统命令与库,如/usr/bin/ls、/usr/lib/dyld - /bin 和 /sbin:基础 shell 工具与系统管理命令
-
/etc、/tmp、/var 的符号链接目标(即
/private/etc等),这些路径虽为链接,但指向内容同样受保护 - 所有预装 Apple 应用(如 Safari、Finder),无论是否在
/Applications中,其二进制与资源均被签名绑定
为什么普通安装不受影响
SIP 的设计是隔离而非封锁。它明确区分“系统”与“用户空间”:
- ✅ 允许自由写入:
/Applications、~/Applications、/usr/local、/Library(非系统级)、~/Library - ✅ 允许运行任意应用:只要不尝试修改受保护路径或注入系统进程,App Store 外下载的软件可正常安装、启动、读写自身沙盒
- ❌ 明确禁止:
sudo cp覆盖/usr/bin/python3、launchctl load加载未签名 kext、lldb附加到 Dock 进程
如何安全地调整 SIP 状态
所有 SIP 配置变更必须在恢复模式下完成,且需重启生效。操作逻辑统一,但 Apple Silicon 机型有额外步骤:
-
查看当前状态:终端中直接运行
csrutil status,无需重启 -
完全禁用(Intel):进入恢复模式 → 终端执行
csrutil disable→ 重启 -
完全禁用(Apple Silicon):进入启动选项 → 进入恢复 → 终端依次执行:
csrutil disablecsrutil authenticated-root disable(缺一不可,否则根卷仍只读) -
选择性放宽:例如仅允许调试工具,用
csrutil enable --without debug;仅允许未签名 kext,用csrutil enable --without kext -
恢复默认保护:任何修改后,都应尽快执行
csrutil enable并重启
关闭 SIP 的真实风险与边界
禁用 SIP 不等于“获得 root 权限”,而是移除了内核对关键路径的写保护层。这意味着:
- 恶意软件一旦获得任意用户权限,就可能篡改
/usr/bin下的命令(如ssh或curl),实现持久化劫持 - 系统更新可能失败,因为安装器无法覆盖被修改过的受保护文件
- 某些安全功能(如 Gatekeeper 的深层验证、XProtect 的运行时扫描)会降级或失效
- 苹果官方不支持禁用 SIP 后的系统稳定性问题,遇到崩溃或异常通常要求先重启用 SIP 排查











