On occasion, the user initiates an action in my Node app that requires escalated administrator or root privileges. Rather than ask users to run the app with sudo
, I would like to prompt the user for their password and escalate the privileges of the already-running Node process.
I am not interested in my app executing a child process with sudo
(as is already possible with sudo-prompt). I want the node process itself to gain root privileges after having been started by a non-root user without sudo
.
One example of an app that displays behavior exhibiting the problem:
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
I would like to write the function promptUserForAdminPassword()
, which would prompt the user for their password, escalating the privileges of Node so it can run server.listen(80)
with root privileges, but run everything prior with user privileges.