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

wxPython - Getting root sudo access and handling root access

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

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 你可以制作第二个 .py 叫做 require_root.py 之类的然后用上面的方法调用它

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

我建议在启动前检查你是否有 root 权限,如果你没有如上所示提示它们,然后将你的 main_app.py 脚本作为 sudo 启动(或者只是打印他们需要 运行 作为根(或显示 wx.MessageBox 或其他)