Changeset 758

Show
Ignore:
Timestamp:
10/26/07 02:55:39 (11 months ago)
Author:
evanweaver
Message:

really fix it

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tags/rel_1-0-2/lib/mongrel/configurator.rb

    r757 r758  
    5555    def change_privilege(user, group) 
    5656      begin 
    57         if group && user 
    58           log "Initializing groups for #{user.inspect}:#{group.inspect}." 
    59           Process.initgroups(user, Etc.getgrnam(group).gid) 
     57        uid, gid = Process.euid, Process.egid 
     58        target_uid = Etc.getpwnam(user).uid if user 
     59        target_gid = Etc.getgrnam(group).gid if group 
     60 
     61        if group and user and (uid != target_uid or gid != target_gid) 
     62          log "Initiating groups for #{user.inspect}:#{group.inspect}." 
     63          Process.initgroups(user, target_id) 
    6064        end 
    6165         
    62         if group 
    63           if Etc.getgrnam(group).gid != Process.egid 
     66        if group and gid != target_gid 
    6467            log "Changing group to #{group.inspect}." 
    65             Process::GID.change_privilege(Etc.getgrnam(group).gid) 
    66           else 
    67             log "Already running as group #{group.inspect}" 
    68           end 
    69         end 
    70  
    71         if user 
     68            Process::GID.change_privilege(target_gid) 
     69        end 
     70 
     71        if user and uid != target_uid 
    7272          if Etc.getpwnam(user).uid != Process.euid 
    7373            log "Changing user to #{user.inspect}."  
    74             Process::UID.change_privilege(Etc.getpwnam(user).uid) 
    75           else 
    76             log "Already running as user #{user.inspect}" 
     74            Process::UID.change_privilege(target_uid) 
    7775          end 
    7876        end