我有一个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
谁能看到我在做什么错,还有更明显的解决方案吗?
谢谢您的建议。