prosodyctl: Also switch group when we switch user

Thu, 23 Jul 2009 03:58:14 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Thu, 23 Jul 2009 03:58:14 +0100
changeset 1580
5be6dc582df3
parent 1579
95698f021c5d
child 1581
4cdf9cefa0bc

prosodyctl: Also switch group when we switch user

prosodyctl file | annotate | diff | comparison | revisions
--- a/prosodyctl	Thu Jul 23 03:47:06 2009 +0100
+++ b/prosodyctl	Thu Jul 23 03:58:14 2009 +0100
@@ -66,19 +66,28 @@
 
 -- Switch away from root and into the prosody user --
 local switched_user, current_uid;
+
+local want_pposix_version = "0.3.1";
 local ok, pposix = pcall(require, "util.pposix");
+
 if ok and pposix then
+	if pposix._VERSION ~= want_pposix_version then print(string.format("Unknown version (%s) of binary pposix module, expected %s", tostring(pposix._VERSION), want_pposix_version)); return; end
 	current_uid = pposix.getuid();
 	if current_uid == 0 then
 		-- We haz root!
 		local desired_user = config.get("*", "core", "prosody_user") or "prosody";
-		local ok, err = pposix.setuid(desired_user);
+		local desired_group = config.get("*", "core", "prosody_group") or desired_user;
+		local ok, err = pposix.setgid(desired_group);
 		if ok then
-			-- Yay!
-			switched_user = true;
-		else
+			ok, err = pposix.setuid(desired_user);
+			if ok then
+				-- Yay!
+				switched_user = true;
+			end
+		end
+		if not switched_user then
 			-- Boo!
-			print("Warning: Couldn't switch to Prosody user '"..tostring(desired_user).."': "..tostring(err));
+			print("Warning: Couldn't switch to Prosody user/group '"..tostring(desired_user).."'/'"..tostring(desired_group).."': "..tostring(err));
 		end
 	end
 else

mercurial