我正在编写一个简单的脚本来重新启动 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)。
感谢你的帮助。
- 塞图