如何调用对话框进行身份验证?

rup*_*ali 13 security python application-development

我正在使用 python 中的 wx 模块编写一个 gui 程序。在程序中,每当我访问需要 root 权限的文件夹时,它都会在终端询问密码,但我想向用户显示对话框以输入密码并验证他的身份。如何在 ubuntu 中调用该对话框并验证用户身份?

lum*_*ric 9

stackoverflow 上有两个不同的问答来回答您的问题:herehere

两个答案都使用命令gksudo(@khamer 已经提到)。如果你运行gksudo command(也没有 python)它基本上会做什么sudo,但是使用图形界面 - 即询问用户密码,然后如果用户在 sudoers 文件中,则以 root 身份运行命令。

要从 python 中的链接答案中实现建议的解决方案,您可以使用以下示例所示的内容:

创建一个文件run.py

#!/usr/bin/python

import subprocess
subprocess.call(['gksudo','python create.py'])
Run Code Online (Sandbox Code Playgroud)

和一个文件create.py

#!/usr/bin/python

# Create test file..
f = file("mytestfile", "w")
Run Code Online (Sandbox Code Playgroud)

然后运行python run.py,在您输入密码后,将创建一个由 root 拥有的文件。如果您运行python create.py它将归您所有(在运行脚本之前该文件不应该存在)。


小智 3

虽然我确信有一个更高级的 python 解决方案,但最糟糕的版本是使用 gksudo。gksudo 执行与 sudo 相同的操作,只不过它创建您提到的用于身份验证的对话框,而不是在命令行上询问。

请参阅https://help.ubuntu.com/community/RootSudo#Graphical_sudo