在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. os.system是我可以用来发出linux命令的最佳命令吗?

  2. 我可以通过上面的命令从root用户更改为hadoop用户,但无法更改为root用户(我知道如果他们允许的话,将会出现安全问题,我想知道这样做是否有可能,至少要通过密码)?

  3. os.setuid()是否起作用?whoami打印用户hadoop,但使用这些命令不会停止进程“ tasktracker”,但是,如果我手动执行相同的命令,它将运行良好(我在手动尝试时使用“ su hadoop”而不是setuid)。

感谢你的帮助。

  • 濑户

回答:

您可以使用:

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

或者如果您没有sudo但有su

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

以上是 在python中更改用户 的全部内容, 来源链接: utcz.com/qa/414092.html

回到顶部