如何调用对话框进行身份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))