macos无“内核驱动授权”概念,管控分两层:amfi签名校验与系统设置中手动允许;终端仅支持查询(kextstat)、加载/卸载(需已授权)、重置tcc策略触发弹窗,ventura起kext已弃用,应迁至driverkit。
macos 中没有“内核驱动授权”这一官方概念,系统也不提供终端指令直接管理内核扩展(kext)的加载权限。真正的控制机制分为两层:系统级签名与完整性校验(apple mobile file integrity, amfi) 和 用户级允许/阻止开关(在“安全性与隐私”设置中)。终端能做的,仅限于查询、安装、卸载、调试等有限操作,且多数需满足严格前提(如关闭 sip、启用开发者模式、或已获用户手动授权)。
以下为实际可行、有据可查的操作方式:
查看已加载的内核扩展
kextstat -l可列出当前运行中的所有 kext,含 Bundle ID、版本、是否已验证;加-p参数可显示更详细路径和依赖关系。
若某 kext 显示<not loaded></not>或start failed,通常意味着签名无效、AMFI 拒绝加载,或未被用户在设置中明确允许。手动加载/卸载(仅限已签名且已授权的 kext)
加载:sudo kextload /path/to/MyDriver.kext
卸载:sudo kextunload /path/to/MyDriver.kext
⚠️ 前提:该 kext 必须通过 Apple 签名(或已配置为开发证书签名并启用“允许从开发者处下载”),且已在“系统设置 > 隐私与安全性 > 完整性保护”下方点击“允许”按钮完成一次人工确认。否则命令会失败并提示Kext rejected due to system policy。重置内核扩展授权状态(触发再次弹窗)
macOS 不提供类似tccutil reset的专用命令,但可通过清空 TCC 数据库中对应记录间接实现:tccutil reset SystemPolicyAllFilestccutil reset SystemPolicyDeveloperFiles
这两个服务控制着系统对第三方开发工具和内核组件的信任策略。重置后,下次尝试加载未授权 kext 时,系统会重新弹出“是否允许此开发者加载内核扩展?”提示。检查是否启用内核扩展支持(macOS 13+ 已弃用)
自 macOS Ventura(13)起,Apple 正式弃用传统 kext 架构,转而推广 DriverKit(用户态驱动)。可通过以下命令确认系统倾向:system_profiler SPSoftwareDataType | grep "System Version"
若版本 ≥ 13.0,应优先考虑迁移至 DriverKit;遗留 kext 仅在兼容模式下有限支持,且无法通过终端绕过图形界面授权步骤。-
强制安装(不推荐,仅调试用)
若确需临时绕过部分检查(如测试自签名驱动),需先:
• 关闭 SIP(重启进恢复模式 → 终端执行csrutil disable)
• 在启动参数中添加kext-dev-mode=1(仅 macOS 10.13–12 支持,13+ 已移除)
• 使用sudo kmutil install --bundle-path /path/to/kext(适用于 DriverKit bundle)注意:关闭 SIP 会显著降低系统安全性,日常使用中不应启用。
不复杂但容易忽略。











