Подтвердить что ты не робот

Аутентификация в python script для запуска от имени root

Я делаю проект в Linux на системном уровне в Python. Поэтому, я хочу знать, что если я запускаю свой код как обычный пользователь и если я обращаюсь к системным файлам, тогда у него должны быть права root для него, то как я могу запросить пароль root и запустить дополнительный код в качестве суперпользователя. Я хочу знать, как запустить python script в качестве суперпользователя с запросом пароля для него.

Любая помощь будет оценена. Спасибо заранее.

4b9b3361

Ответ 1

Другое, что вы можете сделать, это заставить ваш script автоматически вызывать sudo, если он не был выполнен как root:

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, поэтому при следующем запуске script он снова потребует пароль.

Ответ 2

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

Это не будет запрашиваться в середине script, но скорее заставит пользователя повторно запустить его с помощью sudo или root