From 5c35f0f39b8037f30e5f4e62869a55569618fb39 Mon Sep 17 00:00:00 2001 From: calzoneman Date: Wed, 2 Sep 2015 22:45:33 -0700 Subject: [PATCH] setuid: fix folder permissions before dropping --- lib/setuid.js | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/setuid.js b/lib/setuid.js index 82345531..6ca7a4a9 100644 --- a/lib/setuid.js +++ b/lib/setuid.js @@ -1,14 +1,33 @@ var Config = require("./config"); +var fs = require("fs"); +var path = require("path"); + +var needPermissionsFixed = [ + path.join(__dirname, "..", "chanlogs"), + path.join(__dirname, "..", "chandump"), + path.join(__dirname, "..", "google-drive-subtitles") +]; + +function fixPermissions(uid, gid) { + needPermissionsFixed.forEach(function (dir) { + if (fs.existsSync(dir)) { + fs.chownSync(dir, uid, gid); + } + }); +} if (Config.get("setuid.enabled")) { setTimeout(function() { try { - console.log('Old User ID: ' + process.getuid() + ', Old Group ID: ' + process.getgid()); + fixPermissions(); + console.log("Old User ID: " + process.getuid() + ", Old Group ID: " + + process.getgid()); process.setgid(Config.get("setuid.group")); process.setuid(Config.get("setuid.user")); - console.log('New User ID: ' + process.getuid() + ', New Group ID: ' + process.getgid()); + 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("Cowardly refusing to keep the process alive as root."); process.exit(1); } }, (Config.get("setuid.timeout")));