summaryrefslogtreecommitdiff
path: root/lib/webrick
diff options
context:
space:
mode:
Diffstat (limited to 'lib/webrick')
-rw-r--r--lib/webrick/utils.rb16
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/webrick/utils.rb b/lib/webrick/utils.rb
index d371f4989f..41b54271c7 100644
--- a/lib/webrick/utils.rb
+++ b/lib/webrick/utils.rb
@@ -26,16 +26,16 @@ module WEBrick
end
module_function :set_close_on_exec
- def su(user, group=nil)
+ def su(user)
if defined?(Etc)
pw = Etc.getpwnam(user)
- gr = group ? Etc.getgrnam(group) : pw
- Process::gid = gr.gid
- Process::egid = gr.gid
- Process::uid = pw.uid
- Process::euid = pw.uid
- end
- end
+ Process::initgroups(user, pw.gid)
+ Process::Sys::setgid(pw.gid)
+ Process::Sys::setuid(pw.uid)
+ else
+ warn("WEBrick::Utils::su doesn't work on this platform")
+ end
+ end
module_function :su
def getservername