about summary refs log tree commit homepage
path: root/lib/mongrel.rb
diff options
context:
space:
mode:
authorzedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9>2006-05-20 23:14:08 +0000
committerzedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9>2006-05-20 23:14:08 +0000
commit77a2cd78ee1cfacc39009971bd0e8908a3cd7c3f (patch)
tree6c753b690aa558c9688d54261f35c17a5f7b30f5 /lib/mongrel.rb
parent1f2ada2d7bd3fa5cf3e4c458108f8eab2bcba16c (diff)
downloadunicorn-77a2cd78ee1cfacc39009971bd0e8908a3cd7c3f.tar.gz
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@201 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'lib/mongrel.rb')
-rw-r--r--lib/mongrel.rb21
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/mongrel.rb b/lib/mongrel.rb
index 3cc6beb..9e525a2 100644
--- a/lib/mongrel.rb
+++ b/lib/mongrel.rb
@@ -9,7 +9,8 @@ require 'mongrel/command'
 require 'mongrel/tcphack'
 require 'yaml'
 require 'time'
-require 'rubygems'
+require 'rubygems'
+require 'etc'
 
 
 begin
@@ -692,12 +693,26 @@ module Mongrel
       @listeners = {}
       @defaults = defaults
       @needs_restart = false
-
+      
+      change_privilege(@defaults[:user], @defaults[:group])
+      
       if blk
         cloaker(&blk).bind(self).call
       end
     end
-
+    
+    # Change privilege of the process to specified user and group.
+    def change_privilege(user, group)
+      if user
+        log "Changing user to #{user}."
+        Process::UID.change_privilege(Etc.getpwnam(user).uid)
+      end
+      if group
+        log "Changing group to #{group}."
+        Process::GID.change_privilege(Etc.getgrnam(group).gid)
+      end
+    end
+    
     # generates a class for cloaking the current self and making the DSL nicer
     def cloaking_class
       class << self