如何在Mac OS X中以root身份运行命令?

问题描述:

在我的Python GUI应用程序中,我必须以root身份运行一个命令来执行某个操作(具体来说,它会在系统范围内安装一个Python模块)。在Linux上,我只是使用gksudo或kdesu作为传递给subprocess.Popen()的命令的前缀。不幸的是,似乎没有Mac等价物。在指向一些复杂的Objective-C代码之前,我已经看到了这个问题,称为BetterAuthorizationSample ...我并不真正了解它,并且宁愿不编写Objective-C代码来完成这个简单的任务。如果有更简单的方法,我想知道。我想我可以创建我自己的密码对话框,并将它传递给stdin上的常规命令行sudo。如何在Mac OS X中以root身份运行命令?

+0

N.B. 'sudo'可能不会简单地使用stdin。阅读一下:http://www.noah.org/wiki/Pexpect#Q:_Why_not_just_use_a_pipe_.28popen.28.29.29.3F –

我不知道如何提升您的权限,但您可以使用一些AppleScript来要求输入密码。举一个例子,看https://github.com/apenwarr/sshuttle/blob/master/ui-macos/askpass.py

我还没有找到最佳的解决方案,但我只是张贴了我目前的工作液here

它使用osascript具有root权限重新启动本身。