This module implements a single, flexible method for downgrading process identity,
e.g. after listening to a privileged port. Out of the box it supports user/group
identity specified via npm command line arguments or via the standard SUDO_
environment
variables, or it can be provide a custom options object.
npm install downgrade-identity
Following examples all assume a server.js
like this:
var http = require("http"),
argv = require("optimist").argv,
downgradeIdentity = require("downgrade-identity");
downgradeIdentity.verbose = true;
var server = http.createServer().on("listening", downgradeIdentity);
server.listen(80);
Won't work because I'm not a privileged user.
% node test.js
initial process identity is 113/113
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EACCES
Will downgrade to identity pulled from SUDO_
environment variables.
% sudo env | grep SUDO
SUDO_COMMAND=/usr/bin/env
SUDO_USER=femto113
SUDO_UID=113
SUDO_GID=113
% sudo node test.js
initial process identity is 0/0
process identity downgraded to 113/113
Will downgrade to specified identity pulled from npm_config_
environment variables.
% sudo npm start --setuid=113 --setgid=113
> node-downgrade-identity@0.1.0 start /home/femto113/node-downgrade-identity
> node server.js
initial process identity is 0/0
process identity downgraded to 113/113
Downgrade to specified identity provided via opts
export.
% sudo node server.js --setuid 113 --setgid 113
% sudo node server.js --setuid 113 --setgid 113
initial process identity is 0/0
process identity downgraded to 113/113