diff options
author | Matthew Wild <mwild1@gmail.com> | 2009-07-23 03:58:14 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2009-07-23 03:58:14 +0100 |
commit | 3417c24b8854ccf3cad8249e80ab9c81bb2081a2 (patch) | |
tree | d154207c86379a481abb289cc3c694193eb0fa33 | |
parent | 59c01041069ba69838a735694f7e05e85d9d14a5 (diff) | |
download | prosody-3417c24b8854ccf3cad8249e80ab9c81bb2081a2.tar.gz prosody-3417c24b8854ccf3cad8249e80ab9c81bb2081a2.zip |
prosodyctl: Also switch group when we switch user
-rwxr-xr-x | prosodyctl | 19 |
1 files changed, 14 insertions, 5 deletions
@@ -66,19 +66,28 @@ require "util.datamanager".set_data_path(data_path); -- 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 |