From b2cf59aa1cbfb8109f0f2579427159c47f93e6eb Mon Sep 17 00:00:00 2001 From: gotoyuzo Date: Sun, 28 Sep 2003 17:50:52 +0000 Subject: [PATCH] * lib/webrick/utils.rb (Utils::su): use setgid and setuid to set real and effective IDs. and setup group access list by initgroups. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4616 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ lib/webrick/utils.rb | 16 ++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index a6f6fec91f..6dd6c77138 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Sep 29 02:31:44 2003 GOTOU Yuuzou + + * lib/webrick/utils.rb (Utils::su): use setgid and setuid to + set real and effective IDs. and setup group access list by + initgroups. + Mon Sep 27 18:25:13 2003 NAKAMURA, Hiroshi * lib/xsd/charset.rb: XSD::Charset.is_ces did return always true under 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