python脚本中的身份验证以root身份运行

时间:2011-03-07 16:38:49

标签: python pygtk

我正在使用Python在系统级Linux上做一个项目。 所以,我想知道如果我以普通用户身份运行我的代码 如果我正在访问系统文件,那么它应具有root权限, 那我怎么能提示root密码并以超级用户身份运行更多代码。 我想知道,如何以超级用户身份运行python脚本并提供密码提示..

任何帮助将不胜感激。 提前谢谢..

2 个答案:

答案 0 :(得分:27)

你可以做的另一件事是让你的脚本在没有以root身份执行的情况下自动调用sudo:

import os
import sys

euid = os.geteuid()
if euid != 0:
    print "Script not started as root. Running sudo.."
    args = ['sudo', sys.executable] + sys.argv + [os.environ]
    # the next line replaces the currently-running process with the sudo
    os.execlpe('sudo', *args)

print 'Running. Your euid is', euid

输出:

Script not started as root. Running sudo..
[sudo] password for bob:
Running. Your euid is 0

使用sudo -k进行测试,清除sudo时间戳,以便下次运行脚本时再次需要密码。

答案 1 :(得分:5)

import os
euid = os.geteuid() 
if euid != 0:
  raise EnvironmentError, "need to be root"
  exit()

这不会在脚本中间提示,而是强迫用户使用sudo或root用户重新运行它