From f2000b44594fe4fea48f2bbf926bb6028fb85492 Mon Sep 17 00:00:00 2001 From: calzoneman Date: Wed, 2 Sep 2015 23:00:45 -0700 Subject: [PATCH] Fix --- lib/setuid.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/setuid.js b/lib/setuid.js index 6ca7a4a9..cece0e0a 100644 --- a/lib/setuid.js +++ b/lib/setuid.js @@ -1,6 +1,7 @@ var Config = require("./config"); var fs = require("fs"); var path = require("path"); +var execSync = require("child_process").execSync; var needPermissionsFixed = [ path.join(__dirname, "..", "chanlogs"), @@ -9,6 +10,8 @@ var needPermissionsFixed = [ ]; function fixPermissions(uid, gid) { + uid = resolveUid(uid); + gid = resolveGid(uid); needPermissionsFixed.forEach(function (dir) { if (fs.existsSync(dir)) { fs.chownSync(dir, uid, gid); @@ -16,10 +19,18 @@ function fixPermissions(uid, gid) { }); } +function resolveUid(uid) { + return parseInt(execSync('id -u ' + uid), 10); +} + +function resolveGid(uid) { + return parseInt(execSync('id -g ' + uid), 10); +} + if (Config.get("setuid.enabled")) { setTimeout(function() { try { - fixPermissions(); + fixPermissions(Config.get("setuid.user"), Config.get("setuid.group")); console.log("Old User ID: " + process.getuid() + ", Old Group ID: " + process.getgid()); process.setgid(Config.get("setuid.group")); @@ -27,7 +38,7 @@ if (Config.get("setuid.enabled")) { console.log("New User ID: " + process.getuid() + ", New Group ID: " + process.getgid()); } catch (err) { - console.log("Cowardly refusing to keep the process alive as root."); + console.log("Error setting uid: " + err.stack); process.exit(1); } }, (Config.get("setuid.timeout")));