Sonoma系统下Script Editor运行带管理员权限AppleScript无法使用TouchID
解决Sonoma中AppleScript
do shell script 无法使用TouchID验证sudo的问题 问题根源
Sonoma系统下,AppleScript的do shell script "..." with administrator privileges调用的是macOS内置的Authorization Services框架,而非终端里直接触发的sudo流程——这就是为什么你修改pam.d/sudo和sudo_local后终端可用TouchID,但Script Editor里不行的原因。
解决方案
方案1:修改Authorization Services的PAM配置(推荐)
这个配置会让所有依赖Authorization Services的系统验证弹窗(包括Script Editor、系统偏好设置权限验证等)都支持TouchID:
- 备份原配置文件(避免改错无法恢复):
sudo cp /etc/pam.d/authorization /etc/pam.d/authorization.bak - 编辑配置文件:
sudo nano /etc/pam.d/authorization - 在文件开头的
auth规则段,添加一行:
可以把它放在auth sufficient pam_tid.soauth optional pam_krb5.so这类行的上方,保存退出(nano里按Ctrl+O回车,再Ctrl+X)。 - 如果修改时提示权限不足,说明系统完整性保护(SIP)限制了修改:
- 重启Mac,按住
Command+R进入恢复模式 - 打开终端,输入
csrutil disable后重启 - 修改完成后,再次进入恢复模式,输入
csrutil enable重启开启SIP
- 重启Mac,按住
方案2:在AppleScript中直接调用sudo(绕过Authorization Services弹窗)
去掉with administrator privileges参数,让sudo直接触发自身的验证流程(走你已经配置好的pam.d/sudo规则):
do shell script "sudo echo 'Hello'"
这种方式会弹出sudo的验证窗口(支持TouchID),确保你的账号是管理员账号即可正常使用。
注意事项
- 修改系统PAM配置有风险,操作前一定要备份原文件
- 开启SIP是保护系统安全的重要设置,修改完成后务必重新开启
内容的提问来源于stack exchange,提问作者Xehelios
相关产品推荐
相关产品推荐

