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

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

stackoverflow有两个不同的问答回答你的问题: 这里和这里 。

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

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

创建一个文件run.py

 #!/usr/bin/python import subprocess subprocess.call(['gksudo','python create.py']) 

还有一个文件create.py

 #!/usr/bin/python # Create test file.. f = file("mytestfile", "w") 

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

虽然我确信有一个更好的python解决方案,但是down和dirty版本是使用gksudo。 gksudo做了与sudo相同的事情,除了它创建了你提到的身份validation对话框,而不是在命令行上询问。

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

在您的代码中插入此脚本:

 import os Password = raw_input('Please enter your root password!') sudo_command = '' execute = os.system('echo %s|sudo -S %s' % (Password, sudo_command))