【问题标题】:Test User Approval Kernel Extension Loading on mac (TN2459)在 mac (TN2459) 上测试用户批准内核扩展加载
【发布时间】:2018-04-25 19:33:14
【问题描述】:

TN2459:https://developer.apple.com/library/content/technotes/tn2459/_index.html 介绍,在 macOS High Sierra 下,加载新的第三方内核扩展需要用户批准。

我要测试的 kext 在升级到 High Sierra 之前 已加载,因此在升级后加载相同的 kext 不会触发我要测试的用户批准流程。

内核扩展用户同意已启用:

$ spctl kext-consent status
Kernel Extension User Consent: ENABLED 

我在recovery模式下删除了/private/var/db/SystemPolicyConfiguration/KextPolicykext_policy表中kext对应的条目,重启了几次。但是当我加载 kext 时,仍然没有触发用户批准流程。

我想知道策略信息是否缓存在其他地方,我是否需要为我的机器清除 NVRAM 或告诉 syspolicyd 清除它的缓存?还是我需要做其他事情?

【问题讨论】:

标签: macos-high-sierra kernel-extension


【解决方案1】:

简而言之,您必须以恢复模式 (Mac+R) 启动并编辑 sqlite 表 /private/var/db/SystemPolicyConfiguration/KextPolicy

此表在正常启动时可以只读模式访问:

sqlite3 /private/var/db/SystemPolicyConfiguration/KextPolicy
sqlite> SELECT * FROM kext_policy;
sqlite> SELECT * FROM kext_load_history_v3;

您必须删除您的条目(恢复模式)并重新启动,如下所示(将“G43BCU2T37”替换为您的 team_id):

sqlite> DELETE FROM kext_policy WHERE team_id = 'G43BCU2T37';
sqlite> DELETE FROM kext_load_history_v3 WHERE team_id = 'G43BCU2T37';
sqlite> .exit

为避免每次重新启动,您可以更改“系统完整性保护”配置(在恢复模式下):csrutil enable --without fs --no-internal。现在kext_policy 可以从正常启动中更改。

这里描述了整个过程:https://forums.developer.apple.com/thread/79172#248518

【讨论】:

【解决方案2】:

能够使用高山脉 vm 对其进行测试。安装vm的完整步骤是:https://www.howtogeek.com/289594/how-to-install-macos-sierra-in-virtualbox-on-windows-10/

【讨论】:

    猜你喜欢
    • 2018-11-12
    • 2011-01-01
    • 2017-07-19
    • 2015-04-26
    • 1970-01-01
    • 2015-06-17
    • 2023-03-15
    • 2017-09-06
    • 1970-01-01
    相关资源
    最近更新 更多