如何通过终端编程方式启用macOS辅助功能权限以允许发送按键操作
你之前修改的com.apple.universalaccessAuthWarning是权限申请警告弹窗的控制配置,和实际辅助功能权限开关没有关联。macOS的辅助功能权限统一存储在/Library/Application Support/com.apple.TCC/TCC.dbSQLite数据库中,可通过以下步骤完成编程式配置:
操作步骤
- 确认目标应用的Bundle ID
执行以下命令获取脚本编辑器(Script Editor)的Bundle ID:
mdls -name kMDItemCFBundleIdentifier /Applications/Utilities/Script\ Editor.app
返回值为com.apple.ScriptEditor2即为正确结果。
- 写入权限配置到TCC数据库
执行root权限命令插入/更新权限条目:
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR REPLACE INTO access VALUES('kTCCServiceAccessibility','com.apple.ScriptEditor2',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,strftime('%s','now'));"
- 重启TCC服务使配置生效
无需重启整机,执行以下命令重启权限服务即可生效:
sudo killall tccd
Ansible批量配置示例
可直接通过ansible的shell模块批量执行上述操作,对应task配置参考:
- name: 批量配置Script Editor辅助功能权限 become: yes shell: | sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR REPLACE INTO access VALUES('kTCCServiceAccessibility','com.apple.ScriptEditor2',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,strftime('%s','now'));" killall tccd
注意事项
- 所有操作必须拥有root权限才可执行
- 若macOS开启了系统完整性保护(SIP),默认禁止直接修改TCC.db,可通过企业级MDM描述文件推送权限配置,或临时关闭SIP后操作
- 若需为其他应用/二进制文件配置权限,替换上述命令中的Bundle ID即可;无Bundle ID的二进制可将第二个参数改为二进制绝对路径,第三个参数从
0改为1
内容的提问来源于stack exchange,提问作者Rostislav Shtanko
相关产品推荐
相关产品推荐

