13

我有一个在 Mac 上运行的 lua 脚本,需要调用 sudo。

我希望 Mac OS 会自动弹出一个密码请求对话框,但是命令失败并返回 256。

无论如何,我可以实现我的目标吗?

蒂姆

4

1 回答 1

23

快速简便的方法:像这样运行它

/usr/bin/osascript -e 'do shell script "/path/to/myscript args 2>&1 etc" with administrator privileges'

正确且可配置的方式:使用AuthorizationExecuteWithPrivileges来自授权服务的 API(在 Security.framework 中)。

两者都将显示标准的 Mac OS X GUI,要求输入管理员密码,然后以 root 身份执行命令,与 sudo 相同,只是SUDO_USER不会设置环境变量。

如果您需要在已经提升到 root 的情况下从用户帐户下执行单个命令,您可以在它们前面加上/usr/bin/sudo -u $USER.

于 2012-04-23T15:10:49.110 回答