diff --git a/ADVANCED_README.md b/ADVANCED_README.md index 65d610ff..34fff900 100644 --- a/ADVANCED_README.md +++ b/ADVANCED_README.md @@ -166,9 +166,6 @@ $ pm2 start app.json # Start processes with options declared in a $ pm2 start app.js -e err.log -o out.log # Start and specify error and out log -$ pm2 --run-as-user foo start app.js # Start app.js as user foo instead of the user that started pm2 - -$ pm2 --run-as-user foo --run-as-group bar start app.js # Start app.js as foo:bar instead of the user:group that started pm2 ``` For scripts in other languages: @@ -223,8 +220,6 @@ Options: --merge-logs merge logs --watch watch folder(s) for changes. When `true`, watching all folders from root. Can also be a string or an array of strings for paths to watch for changes. --node-args space-delimited arguments to pass to node in cluster mode - e.g. --node-args="--debug=7001 --trace-deprecation" - --run-as-user The user or uid to run a managed process as - --run-as-group The group or gid to run a managed process as ``` @@ -586,11 +581,6 @@ $ cat node-app-1.json "script" : "app.js", "cwd" : "/srv/node-app-1/current" } - -$ pm2 --run-as-user app start node-app-1.json - -$ ps aux | grep node-app -root 14735 5.8 1.1 752476 83932 ? Sl 00:08 0:00 pm2: node-app-1 <-- owned by the default user (root), not app ``` - JSON app declarations are additive. Continuing from above: ```bash @@ -615,8 +605,6 @@ Note that if you execute `pm2 start node-app-2` again, it will spawn an addition "error_file" : "/var/log/node-app/node-app.stderr.log", "out_file" : "log/node-app.stdout.log", "pid_file" : "pids/node-geo-api.pid", - "run_as_user" : "app", - "run_as_group" : "www-data", "instances" : "6", //or 'max' "min_uptime" : "200", // milliseconds, defaults to 1000 "max_restarts" : "10", // defaults to 15 diff --git a/bin/pm2 b/bin/pm2 index 58e958e8..5e9566f8 100755 --- a/bin/pm2 +++ b/bin/pm2 @@ -40,8 +40,6 @@ commander.version(pkg.version) function(val) { return val.split(' '); }) - .option('--run-as-user ', 'The user or uid to run a managed process as') - .option('--run-as-group ', 'The group or gid to run a managed process as') .option('--no-color', 'skip colors') .usage('[cmd] app'); diff --git a/lib/CLI.js b/lib/CLI.js index 363e1bbf..1648c01d 100644 --- a/lib/CLI.js +++ b/lib/CLI.js @@ -99,10 +99,6 @@ CLI.start = function(script, opts, cb) { appConf['ignoreWatch'] = opts.ignoreWatch; if (opts.env) appConf['env'] = opts.env; - if (opts.runAsUser) - appConf['run_as_user'] = opts.runAsUser; - if (opts.runAsGroup) - appConf['run_as_group'] = opts.runAsGroup; if (opts.logDateFormat) appConf['log_date_format'] = opts.logDateFormat; if (typeof(opts.minUptime) !== 'undefined') diff --git a/lib/God/ForkMode.js b/lib/God/ForkMode.js index a75bfc8a..32a7f3fa 100644 --- a/lib/God/ForkMode.js +++ b/lib/God/ForkMode.js @@ -9,7 +9,6 @@ var log = require('debug')('pm2:god'); var fs = require('fs'); var cst = require('../../constants.js'); -var uidNumber = require('uid-number'); var moment = require('moment'); var Common = require('../Common'); @@ -69,19 +68,6 @@ module.exports = function ForkMode(God) { var outFile = pm2_env.pm_out_log_path; var errFile = pm2_env.pm_err_log_path; - /** - * Get the uid and gid number if run_as_user or run_as_group - * is present - * @method getuid - * @param {function} cb A callback that reveice error, uid and gid - */ - function getugid(cb) { - var user = pm2_env.run_as_user || process.getuid(); - var group = pm2_env.run_as_group || process.getgid(); - - uidNumber(user, group, cb); - } - /** * Description * @method startLogging @@ -116,103 +102,93 @@ module.exports = function ForkMode(God) { return cb(err); }; - getugid(function(e, uid, gid){ - if(e){ - God.logAndGenerateError(e); - if (cb) return cb(e); - } - - try { - var cspr = spawn(command, args, { - env : pm2_env, - detached : true, - gid : gid, - uid : uid, - cwd : pm2_env.pm_cwd || process.cwd(), - stdio : ['ipc', null, null] - }); - } catch(e) { - God.logAndGenerateError(e); - if (cb) return cb(e); - } - - cspr.process = {}; - cspr.process.pid = cspr.pid; - cspr.pm2_env = pm2_env; - cspr.pm2_env.status = cst.ONLINE_STATUS; - - cspr.stderr.on('data', function forkErrData(data) { - var log_data = data.toString(); - - if (pm2_env.log_date_format) - log_data = moment().format(pm2_env.log_date_format) + ': ' + log_data; - - stderr.write(log_data); - - God.bus.emit('log:err', { - process : Common.formatCLU(cspr), - data : { - str : data.toString(), - at : Utility.getDate() - } - }); + try { + var cspr = spawn(command, args, { + env : pm2_env, + detached : true, + cwd : pm2_env.pm_cwd || process.cwd(), + stdio : ['ipc', null, null] }); + } catch(e) { + God.logAndGenerateError(e); + if (cb) return cb(e); + } - cspr.stdout.on('data', function forkOutData(data) { - var log_data = data.toString(); + cspr.process = {}; + cspr.process.pid = cspr.pid; + cspr.pm2_env = pm2_env; + cspr.pm2_env.status = cst.ONLINE_STATUS; - if (pm2_env.log_date_format) - log_data = moment().format(pm2_env.log_date_format) + ': ' + log_data; + cspr.stderr.on('data', function forkErrData(data) { + var log_data = data.toString(); - stdout.write(log_data); + if (pm2_env.log_date_format) + log_data = moment().format(pm2_env.log_date_format) + ': ' + log_data; - God.bus.emit('log:out', { - process : Common.formatCLU(cspr), + stderr.write(log_data); + + God.bus.emit('log:err', { + process : Common.formatCLU(cspr), + data : { str : data.toString(), at : Utility.getDate() - }); - }); - - /** - * Broadcast message to God - */ - cspr.on('message', function forkMessage(msg) { - /********************************* - * If you edit this function - * Do the same in ClusterMode.js ! - *********************************/ - if (msg.data && msg.type) { - return God.bus.emit(msg.type ? msg.type : 'process:msg', { - at : Math.round(Date.now() / 1000), - data : msg.data, - process : Common.formatCLU(cspr) - }); - } - else { - return God.bus.emit('process:msg', msg); } }); - - fs.writeFileSync(pidFile, cspr.pid); - - cspr.once('close', function forkClose(status) { - try { - stderr.close(); - stdout.close(); - } catch(e) { God.logAndGenerateError(e);} - }); - - cspr._reloadLogs = function(cb) { - stdout.end(); - stderr.end(); - startLogging(cb); - }; - - cspr.unref(); - - if (cb) return cb(null, cspr); - return false; }); + + cspr.stdout.on('data', function forkOutData(data) { + var log_data = data.toString(); + + if (pm2_env.log_date_format) + log_data = moment().format(pm2_env.log_date_format) + ': ' + log_data; + + stdout.write(log_data); + + God.bus.emit('log:out', { + process : Common.formatCLU(cspr), + str : data.toString(), + at : Utility.getDate() + }); + }); + + /** + * Broadcast message to God + */ + cspr.on('message', function forkMessage(msg) { + /********************************* + * If you edit this function + * Do the same in ClusterMode.js ! + *********************************/ + if (msg.data && msg.type) { + return God.bus.emit(msg.type ? msg.type : 'process:msg', { + at : Math.round(Date.now() / 1000), + data : msg.data, + process : Common.formatCLU(cspr) + }); + } + else { + return God.bus.emit('process:msg', msg); + } + }); + + fs.writeFileSync(pidFile, cspr.pid); + + cspr.once('close', function forkClose(status) { + try { + stderr.close(); + stdout.close(); + } catch(e) { God.logAndGenerateError(e);} + }); + + cspr._reloadLogs = function(cb) { + stdout.end(); + stderr.end(); + startLogging(cb); + }; + + cspr.unref(); + + if (cb) return cb(null, cspr); return false; }); diff --git a/lib/ProcessContainer.js b/lib/ProcessContainer.js index 4fd518b0..ec109005 100644 --- a/lib/ProcessContainer.js +++ b/lib/ProcessContainer.js @@ -182,16 +182,6 @@ function exec(script, outFile, errFile) { }); - // if we've been told to run as a different user or group (e.g. because they have fewer - // privileges), switch to that user before importing any third party application code. - if (process.env.run_as_group) { - process.setgid(process.env.run_as_group); - } - - if (process.env.run_as_user) { - process.setuid(process.env.run_as_user); - } - // Change dir to fix process.cwd process.chdir(process.env.pm_cwd || process.env.PWD || p.dirname(script)); diff --git a/package.json b/package.json index a8c0cb1d..5c48f901 100644 --- a/package.json +++ b/package.json @@ -143,8 +143,7 @@ "pm2-rpc-fallback" : "3.0.9", "vizionar" : "^0.1.0", - "punt" : "2.2.0", - "uid-number" : "0.0.5" + "punt" : "2.2.0" }, "devDependencies": { "mocha": "^1.20.1",