使用`osascript`时如何避免GUI密码提示?


5

我想用 osascript shell命令运行一些AppleScript,但我宁愿避免GUI密码提示。相反,我更喜欢将脚本作为 sudo 从命令行,所以不需要GUI弹出/提示。

该命令如下:

osascript -e 'tell application "System Events" to set UI elements enabled to true'

运行此命令与执行此操作具有相同的效果 系统偏好 无障碍 并检查 启用辅助设备的访问权限

如果它没有提示您输入密码,请尝试相反的方法:

osascript -e 'tell application "System Events" to set UI elements enabled to false'

对于这些命令中的任何一个,您将在OS X GUI中获得密码提示:

Screenshot

我的问题是: 有没有办法避免这个密码提示?


我假设在调用 osascriptsudo 特权可以解决问题,但唉 - 即使在这种情况下,也会显示GUI提示。 :(

sudo osascript -e 'tell application "System Events" to set UI elements enabled to true'

有没有解决的办法?


1
我不知道这只是一个例子,但您也可以启用辅助设备的访问权限 sudo touch /var/db/.AccessibilityAPIEnabled
Lri

1
@Lri echo -n 'a' | sudo tee /private/var/db/.AccessibilityAPIEnabled > /dev/null 2>&1; sudo chmod 444 /private/var/db/.AccessibilityAPIEnabled 这里使用的 )更接近模仿启用系统偏好设置的设置,虽然它不是即时的(不像手动通过SysPrefs)。想知道在这个命令之后要重启哪个服务?无论如何,正如你猜测的那样,这只是一个例子。
Mathias Bynens

Answers:


3

您可以通过修改Mac来禁止密码界面 授权

使用内置 安全 命令行工具或 authbuddy 改变了 system.preferences.accessibility 权利 allow

sudo security authorizationdb write system.preferences.accessibility allow

开放了 system.preferences.accessibility right将允许任何用户在没有密码提示的情况下更改辅助功能设置。


非常酷的技巧 - 谢谢!不幸的是,这会带来潜在的安全风险,因为现在任何应用程序都可以进行此类更改。
Mathias Bynens

仅经过身份验证的管理员可以更改授权权 allow 是可以测试的许多可能规则之一,其他规则可供选择或创建。安全手册页面显示了如何应用替代方案。
Graham Miln

是的,只有经过身份验证的管理员才能运行上述脚本( sudo ) - 但我的意思是,在此之后,系统上的所有应用程序都可以随意更改可访问性设置。
Mathias Bynens
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.