【发布时间】:2017-07-13 22:25:41
【问题描述】:
有时,用户会在我的 Node 应用程序中启动需要升级管理员或 root 权限的操作。我不想让用户使用sudo 运行应用程序,而是提示用户输入密码并升级已经运行的 Node 进程的权限。
我对我的应用程序使用sudo 执行子进程不感兴趣(sudo-prompt 已经可以)。我希望节点进程本身在没有sudo 的非root 用户启动后获得root 权限。
显示问题行为的应用示例:
var process = require('process');
var http = require('http');
var server = http.createServer(...);
// Several steps here that are unsafe to run as root
promptUserForAdminPassword();
server.listen(80); // Fails, needs to be root
我想编写函数promptUserForAdminPassword(),它会提示用户输入密码,提升Node的权限,以便它可以以root权限运行server.listen(80),但以用户权限运行之前的所有内容。
【问题讨论】:
-
这实际上是对您对加布里埃尔回答的评论的回复,但我认为它属于这里更好。我们在这里最擅长的是了解整体问题并提出解决方案,我们经常找到比 OP 想到或询问的任何解决方案都要好得多的解决方案。您只要求一个似乎没有人回答的特定解决方案,并且您没有描述您实际的整体问题范围,因此我们无法提供其他解决方案。你在这里给社区造成了障碍并成功了,所以如果你的具体要求不存在,我们可能无法提供帮助。
-
另外,你在什么平台上运行。 WIndows 与 *nix 上的权限内容通常不同。
-
@jfriend00 我不同意。 Stack Overflow 不适用于整体解决方案建议,存在 Too Broad close 原因及其随附的描述就证明了这一点。我很乐意在聊天中进一步讨论什么是关于 SO 的好问题。
-
顺便说一句 - 对这个问题缺乏答案本身就是一种答案,而且这些信息很有用。一个明确的答案,“因为 XYZ,你所问的问题是不可能的”,这会更好,因为其他试图实现类似东西的人可能会缩短他们的研究并改变他们的设计。
-
Too Broad 是指有人提出的问题过于宽泛,根本不具体。当有些人描述了他们面临的整体问题,然后展示了他们尝试过的解决方案以及他们陷入困境的地方时,它永远不会适用。这完美地定义了他们试图解决的具体问题(在足够高的层次上包括整体背景),展示了他们尝试了什么以及他们卡在哪里,然后允许其他人为他们提供他们甚至不知道的解决方案。祝你的问题好运,因为这里似乎没有什么可做的。
标签: node.js ubuntu macos-sierra