aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/mod_posix.lua
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2009-08-15 12:17:27 +0200
committerTobias Markmann <tm@ayena.de>2009-08-15 12:17:27 +0200
commit6a260eaa2cdffb9105c31a6967dfae78d6738a26 (patch)
tree3e44c01614efab933c03f21402e3d21fc7fad4e4 /plugins/mod_posix.lua
parent8162f0368b15af6fee854087b264ddac15a05ab5 (diff)
downloadprosody-6a260eaa2cdffb9105c31a6967dfae78d6738a26.tar.gz
prosody-6a260eaa2cdffb9105c31a6967dfae78d6738a26.zip
Add setuid and setgid support.
Diffstat (limited to 'plugins/mod_posix.lua')
-rw-r--r--plugins/mod_posix.lua14
1 files changed, 14 insertions, 0 deletions
diff --git a/plugins/mod_posix.lua b/plugins/mod_posix.lua
index 0f46888d..a0830d82 100644
--- a/plugins/mod_posix.lua
+++ b/plugins/mod_posix.lua
@@ -24,6 +24,20 @@ local prosody = _G.prosody;
module.host = "*"; -- we're a global module
+-- Allow switching away from root, some people like strange ports.
+module:add_event_hook("server-started", function ()
+ local uid = config_get("*", "core", "setuid");
+ local gid = config_get("*", "core", "setgid");
+ if gid then
+ pposix.setgid(gid);
+ module:log("debug", "Change group to "..gid..".");
+ end
+ if uid then
+ pposix.setuid(uid);
+ module:log("debug", "Change user to "..uid..".");
+ end
+ end);
+
-- Don't even think about it!
module:add_event_hook("server-starting", function ()
if pposix.getuid() == 0 and not config_get("*", "core", "run_as_root") then