强制GUI应用程序以root身份运行
我正在准备在OS X上发布一个应用程序。这是我第一次在这个平台上写应用,而且这个应用需要管理员权限才能正常运行,所以我需要在每次启动时都能集成这个功能。
这个应用是用Python 2.7写的,然后用PyInstaller编译成可执行文件。到目前为止,我尝试过:
用命令
sudo pyinstaller -w --icon=/path/to/icon /path/to/script.py
来运行PyInstaller通过
sudo su
来调用PyInstaller命令
现在我不知道还可以尝试什么。请问这是否可以通过符号链接来实现呢?
2 个回答
1
以管理员身份运行安装程序,在你之后以普通用户身份启动应用程序时是没有效果的。
可以试试用 sudo python /path/to/script.py
来运行。
如果这样可以成功,那就把这个命令放进一个脚本里,以后就用这个脚本来以管理员身份启动应用程序(懂MacOS的人可能会告诉你怎么为这个脚本创建一个好看的图标)。
警告:这样做会让你的系统容易受到攻击。如果你是在自己的Mac上这么做,那没问题。但如果你是在开发一个要卖给别人的产品,那就需要重新考虑你的设计,因为这样做是非常不安全的。
2
苹果建议,不要让图形用户界面(GUI)应用程序以管理员身份运行,因为这些应用程序中包含的库会增加恶意软件攻击的风险。
相反,建议将你的代码分成两个部分,一个是图形界面,另一个是单独的辅助应用程序,这个辅助程序可以拥有管理员权限。
这里有一个示例应用程序,可以查看。