diff options
| author | Michael E Brown <michael_e_brown@dell.com> | 2007-10-17 11:32:09 -0500 |
|---|---|---|
| committer | Michael E Brown <michael_e_brown@dell.com> | 2007-10-17 11:32:09 -0500 |
| commit | b30e096317d3b2b05f0be80fd7fd74eeb64bdafc (patch) | |
| tree | 18caf845dec8363a9899e9dbeebac82286f5d138 /src/py-libs | |
| parent | 06faade86a4bcdd823da33da4fd9a159139010d7 (diff) | |
| download | mock-b30e096317d3b2b05f0be80fd7fd74eeb64bdafc.tar.gz mock-b30e096317d3b2b05f0be80fd7fd74eeb64bdafc.tar.xz mock-b30e096317d3b2b05f0be80fd7fd74eeb64bdafc.zip | |
move uid management into a class so it can be easily passed to chroot obj and unit tested.
Diffstat (limited to 'src/py-libs')
| -rw-r--r-- | src/py-libs/uid.py | 75 |
1 files changed, 43 insertions, 32 deletions
diff --git a/src/py-libs/uid.py b/src/py-libs/uid.py index 57142ff..5aa2944 100644 --- a/src/py-libs/uid.py +++ b/src/py-libs/uid.py @@ -19,38 +19,49 @@ # revised and adapted by Michael Brown # python library imports +import logging import os # our imports -from mock.trace_decorator import trace - -# functions - -origruid=os.getruid() # 500 -origeuid=os.geteuid() # 0 - -@trace -def savePerms(): - global origruid - global origeuid - origruid = os.getruid() - origeuid = os.geteuid() - -@trace -def elevatePerms(): - os.setreuid(0, 0) - -@trace -def dropPermsTemp(): - elevatePerms() - os.setreuid(0, origruid) - -@trace -def dropPermsForever(): - elevatePerms() - os.setreuid(origruid, origruid) - -@trace -def becomeUser(uid): - elevatePerms() - os.setreuid(0, uid) +from mock.trace_decorator import traceLog + +# set up logging +log = logging.getLogger("mock.uid") + +# class +class uidManager(object): + @traceLog(log) + def __init__(self): + self.saveCurrentPrivs() + + @traceLog(log) + def saveCurrentPrivs(self): + self.origruid = os.getuid() # 500 + self.origeuid = os.geteuid() # 0 + self.origrgid=os.getgid() # 500 + self.origegid=os.getegid() # 500 + + @traceLog(log) + def elevatePrivs(self): + os.setreuid(0, 0) + os.setregid(0, 0) + + @traceLog(log) + def dropPrivsTemp(self): + elevatePrivs() + os.setreuid(0, self.origruid) + os.setregid(self.origrgid, self.origegid) + + @traceLog(log) + def dropPrivsForever(self): + elevatePrivs() + os.setreuid(self.origruid, self.origruid) + os.setregid(self.origrgid, self.origegid) + + @traceLog(log) + def becomeUser(self, uid, gid=None): + elevatePrivs() + os.setreuid(0, uid) + if gid is not None: + os.setregid(gid, gid) + |
