如果系统的 SIP(系统完整性保护)已经关闭,您就可以自由地为任何应用添加所需的权限。
为了让命令更通用,且避免因不同 macOS 版本(如 Sequoia/Sonoma)数据库列数变化而导致命令报错,我们可以使用 “指定列名” 的写法。这样您只需要关注两个参数:权限服务名称 和 应用的 Bundle ID(包名) 。
通用的写入模板如下:
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR REPLACE INTO access (service, client, client_type, auth_value, auth_reason, auth_version) VALUES ('[权限服务名称]', '[应用 Bundle ID]', 0, 2, 2, 1);"
第一步:获取其他应用的 Bundle ID(包名)
要为其他应用加权限,您需要先获取它的唯一识别码(Bundle ID)。
-
最快的获取方法:在终端中输入以下命令,将双引号内的软件名称替换为您在“应用程序”文件夹中看到的实际名称:
osascript -e 'id of app "微信"' # 返回结果示例:com.tencent.xinWeChat(注:如果查询失败,通常是因为软件名称中含有空格或特殊字符,请确保名称与访达里的一致)
-
常见软件的 Bundle ID 示例:
-
微信:com.tencent.xinWeChat
-
腾讯会议:com.tencent.meeting
-
钉钉:com.alibaba.DingTalkMac
-
飞书:com.bytedance.ee.lark
-
Zoom:us.zoom.xos
-
第二步:根据需要选择“权限服务名称”
除了麦克风,您也可以用这个命令授权其他硬件:
-
麦克风权限:kTCCServiceMicrophone
-
摄像头权限:kTCCServiceCamera
-
屏幕录制权限:kTCCServiceScreenCapture
-
辅助功能权限(Accessibility):kTCCServiceAccessibility
第三步:组合并执行命令
假设您现在想给 微信 授予 麦克风 权限,命令组合后如下:
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR REPLACE INTO access (service, client, client_type, auth_value, auth_reason, auth_version) VALUES ('kTCCServiceMicrophone', 'com.tencent.xinWeChat', 0, 2, 2, 1);"
如果您想给 微信 授予 摄像头 权限:
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR REPLACE INTO access (service, client, client_type, auth_value, auth_reason, auth_version) VALUES ('kTCCServiceCamera', 'com.tencent.xinWeChat', 0, 2, 2, 1);"
第四步:使权限生效
每次在终端中修改完权限后,都需要执行以下命令刷新系统服务:
killall tccd
刷新后,去系统设置的“隐私与安全”中查看,对应的应用就已经成功出现在列表中并开启了。