NodeJS应用程序如何以sudo自身重启?

时间:2019-06-11 14:47:57

标签: node.js

我有一个NodeJS应用程序,需要以超级用户身份运行。运行此命令的用户(应该)具有sudo特权。因此,他们可以使用“ sudo node ...”轻松运行该应用程序。为了方便起见,如果应用程序未以root用户身份运行,我希望该应用程序使用sudo重新启动。

阅读NodeJs execute command in background and forget时,我尝试了以下操作:

const isroot = process.getuid && process.getuid() === 0;
if (!isroot) {
  console.log("Must be running as superuser! Restarting with sudo.");

  spawn("sudo", process.argv, {
    stdio: "inherit",
    detached: true
  }).unref();

  process.exit(0);
}

但是,这不起作用,因为用户需要输入密码,并且尽管将stdio设置为继承,我仍然收到错误消息:

  sudo: no tty present and no askpass program specified

谁能看到我在做什么错,还有更明显的解决方案吗?

谢谢您的建议。

0 个答案:

没有答案
相关问题