аутентификация в скрипте Python для запуска от имени пользователя root - PullRequest
16 голосов
/ 07 марта 2011

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

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

Ответы [ 2 ]

27 голосов
/ 07 марта 2011

Еще одна вещь, которую вы можете сделать, - это чтобы ваш скрипт автоматически вызывал 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, чтобы при следующем запуске сценария ему снова потребовался пароль.

5 голосов
/ 07 марта 2011
import os
euid = os.geteuid() 
if euid != 0:
  raise EnvironmentError, "need to be root"
  exit()

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

...