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

Я пишу простой скрипт, который перезапускает подчиненное устройство 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')

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

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

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

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

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

  • Сетху
5
задан sethu 6 November 2011 в 04:56
поделиться