# HG changeset patch # User Matthew Wild # Date 1248317894 -3600 # Node ID 5be6dc582df3abf71ed0784a4ea8883417bcdefd # Parent 95698f021c5dfb25365c6ec3700d4ad4d335e573 prosodyctl: Also switch group when we switch user diff -r 95698f021c5d -r 5be6dc582df3 prosodyctl --- 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