SIP 的详细配置需通过 csrutil list 查看各子功能状态,结合 sysctl -n kern.securelevel 验证内核级生效、固件密码设置及关键路径写入测试综合判断;子功能可独立禁用但须在恢复模式操作,且禁用会降低安全性。

查看 macOS 系统完整性保护(SIP)的详细配置权限,不能只看“启用/禁用”这个开关——它背后是一组可独立控制的子功能,比如是否允许加载未签名内核扩展、是否限制调试工具、是否保护 NVRAM 参数等。这些细粒度权限在默认启用状态下是统一开启的,但可通过 csrutil 命令查看和调整。
查看当前 SIP 的完整配置状态
终端中运行以下命令,能显示 SIP 各项子功能的实际启用情况:
- 打开终端(应用程序 → 实用工具 → 终端),输入:
csrutil status
该命令返回主状态(enabled/disabled),但不展示细分项。 - 要看到具体哪些保护模块被启用或绕过,需执行:
csrutil list
这是 macOS 10.11 及以后版本支持的命令,会列出所有 SIP 保护域及其当前状态,例如:
• Apple Internal: enabled
• Kext Signing: enabled
• Filesystem Protections: enabled
• Debugging Restrictions: enabled
• DTrace Restrictions: enabled
• NVRAM Protection: enabled - 若某项显示为 disabled(如 Kext Signing: disabled),说明该保护已被主动关闭——这通常发生在使用
csrutil enable --without kext等定制命令后,而非默认状态。
确认各保护项是否真正生效
仅看 csrutil list 输出还不够,某些保护依赖底层内核行为是否激活:
- 运行:
sysctl -n kern.securelevel
返回 1 表示 SIP 内核级防护已实际生效;返回 -1 或报错,说明虽标记为 enabled,但未进入受保护运行模式(常见于 Apple Silicon Mac 上误用 Intel 指令或启动异常)。 - 检查固件密码是否设置:
前往 系统设置 → 隐私与安全性 → 固件密码。若未启用,即使 SIP 全开,攻击者仍可通过外接设备绕过启动验证——这属于 SIP 生效的前提条件之一。 - 验证关键路径是否受控:
尝试在终端执行:touch /System/Library/Extensions/test.kext
若提示 Operation not permitted,说明文件系统保护正在起作用;若成功写入,则对应保护项可能被禁用或未生效。
理解 SIP 各项权限的实际影响范围
不同子功能保护的对象和风险等级不同,不能一概而论:
- Kext Signing(内核扩展签名):强制要求所有 kext 必须由 Apple 签名。关闭此项会导致未签名驱动可加载,极大增加内核级恶意软件风险。
-
Filesystem Protections(文件系统保护):锁定
/System、/usr、/bin、/sbin及其符号链接(如/etc→/private/etc)。第三方软件向这些路径写入会失败,但/usr/local和/Applications不在此列。 - Debugging Restrictions(调试限制):阻止非 Apple 签名进程对系统进程进行 ptrace、lldb 注入等调试操作。开发调试时可能需临时绕过,但日常应保持启用。
-
NVRAM Protection(NVRAM 保护):防止修改启动参数(如
boot-args)。若此项目 disabled,攻击者可能通过 NVRAM 注入恶意启动参数绕过 SIP。
安全修改 SIP 权限的前提与提醒
SIP 子功能只能在恢复环境中调整,且修改后必须重启才生效:
- 重启 Mac,按住 Command (⌘) + R(Intel)或长按电源键进启动选项选“选项”(Apple Silicon),进入恢复模式。
- 顶部菜单 → 实用工具 → 终端,输入类似命令:
csrutil enable --without kext,dtrace
表示启用 SIP,但排除内核扩展和 DTrace 两项保护。 - ⚠️ 注意:禁用任何子项都会降低系统安全性。Apple 官方明确建议仅在必要开发场景下临时禁用,并应在完成任务后立即恢复完整保护(
csrutil enable)。


















