Смена пользователя в питоне

Я пишу простой сценарий, который перезапускает раб Hadoop. В сценарии я должен сделать некоторые начальные изменения как пользователь root. После этого мне нужно перейти к пользователю «hadoop» и выполнить набор команд. Я использовал os.system для запуска команд, но я сомневаюсь, что это работает хорошо. Например:

uid=pwd.getpwnam('hadoop')[2]
os.setuid(uid)
os.system('whoami')
os.chdir('/home/hadoop/hadoop/')
os.system('bin/hadoop-daemon.sh stop tasktracker')

Снова я должен выполнить некоторые команды от имени root после этого и снова стать пользователем «hadoop» и выполнить:

os.system('bin/hadoop-daemon.sh stop tasktracker')

У меня есть три вопроса здесь,

Является ли os.system лучшей командой, которую я могу использовать для ввода команд linux?

Я могу перейти от пользователя root к пользователю hadoop по указанным выше командам, но я не могу перейти к пользователю root (я могу понять, что будут проблемы с безопасностью, если они позволят это, я хочу знать, есть ли возможность сделать это По крайней мере, передав пароль)?

Os.setuid () работает? whoami печатает пользователя hadoop, но процесс «tasktracker» не останавливается с помощью этих команд, но если я выполняю те же команды вручную, он работает нормально (я использую «su hadoop» вместо setuid при попытке его выполнить вручную).

Спасибо за вашу помощь.

Sethu

Ответы на вопрос(4)

Ваш ответ на вопрос