Changer d'utilisateur en python

Je suis en train d'écrire un script simple qui redémarre une hadoop esclave. Dans le script, je dois faire quelques changements initiaux en tant qu'utilisateur racine. Après que j'ai changer d'utilisateur "hadoop" et d'effectuer des commandes. J'ai été en utilisant le système d'exploitation.système pour exécuter des commandes mais je doute que cela fonctionne bien. Par exemple:

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

Encore, je dois effectuer certaines commandes en tant que root après cela, et redevenir utilisateur "hadoop" et de l'exécuter :

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

J'ai trois questions ici ,

  1. Est os.le système est le meilleur de la commande que je peux utiliser pour émettre des commandes linux ?
  2. Je suis en mesure de changer de l'utilisateur root à l'utilisateur hadoop par la commande ci-dessus, mais je ne suis pas en mesure de changer pour l'utilisateur root (je peux comprendre, il y aura des problèmes de sécurité si elles le permettent, je veux savoir est-il possible de le faire , au moins en passant le mot de passe) ?
  3. Os.setuid ()? whoami imprime utilisateur hadoop, mais le processus de "tasktracker" n'est pas arrêté à l'aide de ces commande, mais si j'effectue les mêmes commandes manuellement, il fonctionne très bien (j'ai utiliser "su hadoop" au lieu de "setuid" tout en essayant manuellement).

Merci à tous pour votre aide.

  • Sethu

OriginalL'auteur sethu | 2011-11-06