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

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

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

答案1

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它将归您所有(运行脚本之前该文件不应存在)。

答案2

虽然我确信有一个更精致的 python 解决方案,但最简陋的版本是使用 gksudo。gksudo 的功能与 sudo 相同,只是它会创建您提到的身份验证对话框,而不是在命令行上询问。

https://help.ubuntu.com/community/RootSudo#Graphical_sudo

答案3

将此脚本插入到您的代码中:

import os

Password = raw_input('Please enter your root password!')

sudo_command = '<your command>'

execute = os.system('echo %s|sudo -S %s' % (Password, sudo_command))

相关内容