让sudo通过GUI请求密码

tar*_*mes 13 macos sudo osx-lion

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

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

无论如何我能实现目标吗?

蒂姆

ham*_*ene 19

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

/usr/bin/osascript -e 'do shell script "/path/to/myscript args 2>&1 etc" with administrator privileges'
Run Code Online (Sandbox Code Playgroud)

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

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

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