如何通过图形化sudo获取Python的root权限?

5

我的Python程序的一部分需要管理员权限。如何使用类似于gksudo命令的GUI弹窗获得root权限?

我只需要在程序的一个小部分中获取root权限,因此最好只为特定函数获取权限。

我希望能够做到以下操作:

gksudo(my_func, 'description of why password is needed')
2个回答

4

gksudo可以用来启动以管理员权限运行的程序。您的应用程序需要以root身份运行的部分必须能够从命令行作为单独的进程调用。如果您需要在两者之间进行某种形式的通信,可以使用套接字或监视文件等。


1
但是,如果您使用套接字,请确保攻击者无法连接到gksudoed程序。在我看来,最好使用DBUS或类似的东西(会话特定)。 - thejh
如果您选择这个选项,应该使用subprocess模块而不是使用os.system。http://docs.python.org/library/subprocess.html - user35288

3

以下是两种选择:

您需要将需要root权限的程序部分制作成一个独立的文件,然后像这样执行该文件:

>>> import subprocess
>>> subprocess.call(['gksudo','python that_file.py'])

这将弹出密码提示并作为root运行that_file.py文件。

你也可以要求程序从一开始就以root身份运行,并让程序用户在命令行中输入"gksudo python your_program.py",这显然不是最好的选择,如果你的程序通常是从菜单启动的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接