Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 1348

Show
Ignore:
Timestamp:
09/10/06 18:12:18
Author:
fumanchu
Message:

Engine.drop_privileges: bugfix and allow uid/gid to be names or ints.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/_cpengine.py

    r1337 r1348  
    267267            """Drop privileges. UNIX version (uid, gid, and umask).""" 
    268268            if not (self.uid is None and self.gid is None): 
     269                if self.uid is None: 
     270                    uid = None 
     271                elif isinstance(self.uid, basestring): 
     272                    uid = self.pwd.getpwnam(self.uid)[2] 
     273                else: 
     274                    uid = self.uid 
     275                 
     276                if self.gid is None: 
     277                    gid = None 
     278                elif isinstance(self.gid, basestring): 
     279                    gid = self.grp.getgrnam(self.gid)[2] 
     280                else: 
     281                    gid = self.gid 
     282                 
    269283                def names(): 
    270                     name = pwd.getpwuid(os.getuid())[0] 
    271                     group = grp.getgrgid(os.getgid())[0] 
     284                    name = self.pwd.getpwuid(os.getuid())[0] 
     285                    group = self.grp.getgrgid(os.getgid())[0] 
    272286                    return name, group 
    273287                 
    274288                cherrypy.log('Started as %r/%r' % names(), "PRIV") 
    275                 if self.gid is not None: 
    276                     os.setgid(grp.getgrnam(self.gid)[2]
    277                 if self.uid is not None: 
    278                     os.setuid(pwd.getpwnam(self.uid)[2]
     289                if gid is not None: 
     290                    os.setgid(gid
     291                if uid is not None: 
     292                    os.setuid(uid
    279293                cherrypy.log('Running as %r/%r' % names(), "PRIV") 
    280294             

Hosted by WebFaction

Log in as guest/cpguest to create tickets