wxPython - 获取root sudo访问权限并处理root访问权限

时间:2015-12-07 20:07:20

标签: python user-interface wxpython root wxwidgets

我有一个GUI,可以设置模拟所需的一切。问题是,模拟使用的是linux容器和命名空间,我需要root访问权来设置模拟。现在,我可以使用sudo以root身份运行我的gui.py并且一切都很好,但我希望能够像任何用户一样运行它。当需要root访问权限时,提示符将要求输入密码。其他应用程序一直这样做。用wx可以轻松完成吗?一旦我有root访问权限,我将如何区分以root身份执行的操作和不执行root操作的内容?

1 个答案:

答案 0 :(得分:1)

root_pw = wx.GetTextFromUser("Enter Root Password:")
os.system("echo {pw} | sudo -S -p '' {root_cmd}".format(pw=root_pw,root_cmd="apt-get install something"))

(实际上你可能想使用os.system以外的其中一种机制)

是你可以轻松做到这一点的一种方式......

这会利用-S开关告诉sudo使用提供给STDIN的下一个东西作为root密码而不是提示它...回显密码然后提供密码

如果你的根东西是python,你可以制作一个名为require_root.py的第二个.py,并用上面的方法调用它

或者你可以给它"python {my_name}".format(my_name=sys.argv[1])作为命令,然后破坏你当前的框架,有效地重新启动应用程序与root权限

我建议你在启动之前检查你是否有root权限,如果你没有如上所示为它们做好准备并将你的main_app.py脚本作为sudo启动(或者只是打印它们需要以root身份运行(或者显示wx)。 MessageBox或其他)