AppleScript执行tmutil遇权限问题:已授权仍报错求助
解决AppleScript中以root权限执行tmutil排除命令的问题
核心错误点修正
你之前的命令同时使用了sudo和with administrator privileges,这属于重复且冲突的操作——with administrator privileges参数本身就会让do shell script以root权限执行命令,完全不需要额外添加sudo,这是导致权限提示混乱的主要原因。
正确的AppleScript命令写法
直接移除命令中的sudo,保留with administrator privileges即可,同时注意给带空格的路径加引号避免解析错误:
do shell script "tmutil addexclusion -v \"/Volumes/iTunes Library\"" with administrator privileges
权限授予的正确对象
错误提示要求Terminal的全盘访问是误导性的,实际需要授予权限的是运行这个AppleScript的程序:
- 如果在Script Editor中调试:打开「系统设置」→「隐私与安全性」→「全盘访问」,找到并勾选「Script Editor」,然后重启Script Editor。
- 如果是导出的AppleScript应用:同样在「全盘访问」列表中找到你的应用并勾选,重启应用后生效。
外部Shell脚本的问题解决
如果要调用外部脚本,需注意两个关键点:
- 脚本开头必须添加正确的Shebang(比如
#!/bin/zsh或#!/bin/bash),确保系统能识别执行环境。 - 脚本内不要加
sudo,而是在AppleScript调用时通过with administrator privileges获取root权限。
示例脚本tmutil_exclude.sh:
#!/bin/zsh tmutil addexclusion -v "/Volumes/iTunes Library"
AppleScript调用代码(替换为你的脚本实际绝对路径):
do shell script "/Users/你的用户名/脚本路径/tmutil_exclude.sh" with administrator privileges
额外验证步骤
- 先在终端手动执行
sudo tmutil addexclusion -v "/Volumes/iTunes Library",确认命令本身能正常运行,排除路径错误或Time Machine状态问题。 - 如果仍有权限报错,尝试重置隐私权限:从「全盘访问」列表中移除对应的应用/Script Editor,重启Mac后重新添加权限。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

