首页 > 解决方案 > NodeJS 应用程序如何以 sudo 身份重新启动?

问题描述

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

在后台读取NodeJs执行命令并忘记,我尝试了以下方法:

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

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

感谢您的任何建议。

标签: node.js

解决方案


推荐阅读