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

Dny*_*ate 16 python pygtk

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

任何帮助将不胜感激.先感谢您..

sam*_*ias 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
Run Code Online (Sandbox Code Playgroud)

输出:

Script not started as root. Running sudo..
[sudo] password for bob:
Running. Your euid is 0
Run Code Online (Sandbox Code Playgroud)

使用sudo -k进行测试,以清除所以下一次运行该脚本时它会再次需要密码,你的sudo时间戳.

  • 此解决方案确实涉及以 root 权限重新启动脚本(而不是给予正在运行的脚本的相同实例 root 权限),以免任何人感到好奇。 (2认同)

loo*_*non 5

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

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