sip是macos内核级运行时防护机制,非简单只读设置;它通过com.apple.rootless属性和rootless.conf定义保护范围,强制拒绝root对/system、/bin、/sbin、/usr(除/usr/local)、/private/etc等路径的修改,仅apple签名进程可绕过。

macOS 通过系统完整性保护(SIP)实现对关键系统文件的不可变性保护,这不是简单的“只读”设置,而是由内核强制执行的运行时防护机制。即使拥有 root 权限,未经 Apple 明确授权的进程也无法修改、删除或重命名受保护路径下的文件与目录。
受保护的核心路径范围
SIP 并非覆盖整个系统,而是聚焦于 macOS 运行所依赖的根基性位置:
- /System:包含内核、驱动、系统框架和预装应用二进制文件
- /bin、/sbin、/usr(除 /usr/local 外):存放核心命令行工具与系统库
- /etc、/tmp、/var 的符号链接目标(即 /private/etc、/private/tmp、/private/var)
- 绝大多数预装在 /Applications 下的 Apple 应用(如 Finder、Safari、Mail)
底层实现方式
不可变性并非靠文件权限位(如 chmod)维持,而是结合多层技术协同生效:
- 内核在加载时检查文件的扩展属性 com.apple.rootless,标记为受保护对象
- 关键路径列表由 /System/Library/Security/rootless.conf 静态定义,系统启动时载入
- 任何写入、重命名、符号链接创建等操作,只要目标位于保护范围内,内核会直接拒绝,返回 Operation not permitted
- 调试器(如 lldb)、DTrace、代码注入类工具对受保护进程也受限,防止运行时篡改
绕过限制的合法途径
SIP 的设计原则是“默认关闭、明确授权”,用户无法在常规系统中临时关闭它来安装软件。唯一合规方式是:
- 重启进入恢复模式(按住 Command+R 启动)
- 打开终端,运行 csrutil disable(不推荐)或 csrutil enable --without kext 等精细化开关
- 所有修改需写入 NVRAM,并在下次启动时生效
- Apple 签名的系统更新、安装器、配置描述文件等自带特权,可绕过 SIP 执行必要更新
与文件锁定、加密的区别
注意区分 SIP 和其他保护手段:
- 文件锁定(右键→显示简介→勾选“已锁定”)仅作用于单个用户文件,不影响系统级可写性,也不防 root 删除
- 文件保险箱 提供的是静态数据加密,保护的是磁盘上存储内容的机密性,而非运行时访问控制
- 磁盘工具加密 是全卷级 AES 加密,解决的是物理丢失风险,与文件是否可被修改无关











