node.js - 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
谁能看到我做错了什么,有没有更明显的解决方案?
感谢您的任何建议。
解决方案
推荐阅读
- python - 如何检查变量是否与txt文件中的一行相同 - python
- arrays - 如何在不使用任何循环的情况下计算 char 数组中 char 的长度?
- ios - 子视图中的 UITableView 不响应触摸事件并且不滚动
- rest - 在运行时将 TFDMemTable 重置为默认值(无字段定义)
- linux-device-driver - 如何从 udev 路径转换为 ACPI 设备
- python - 原始反应事件在不和谐 py 中不起作用
- ubuntu - 无法在 Ubuntu1804 上 ping github - 怀疑网络配置问题
- r - 用两行中的值减去所有列
- css - SVG 文本标签中的 CSS 缩放动画在 Safari 上不起作用
- class - 将消息类更改为自定义表单的约会