Смена пользователя в питоне
Я пишу простой сценарий, который перезапускает раб 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