Аутентификация в python script для запуска от имени root
Я делаю проект в Linux на системном уровне в Python.
Поэтому, я хочу знать, что если я запускаю свой код как обычный пользователь и
если я обращаюсь к системным файлам, тогда у него должны быть права root для него,
то как я могу запросить пароль root и запустить дополнительный код в качестве суперпользователя.
Я хочу знать, как запустить python script в качестве суперпользователя с запросом пароля для него.
Любая помощь будет оценена.
Спасибо заранее.
Ответы
Ответ 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