, , http://antonym.org/2005/12/dropping-privileges-in-python.html
, umask , , , , , , ( , umask , )
, , , 2005 , ,
def drop_privileges(uid_name='nobody', gid_name='nogroup'):
running_uid = pwd.getpwnam(uid_name)[2]
running_gid = grp.getgrnam(gid_name)[2]
try:
os.setgid(running_gid)
except OSError, e:
logging.error('Could not set effective group id: %s' % e)
exit()
try:
os.setuid(running_uid)
except OSError, e:
logging.error('Could not set effective user id: %s' % e)
exit()
new_umask = 077
old_umask = os.umask(new_umask)
logging.info('drop_privileges: Old umask: %s, new umask: %s' % \
(oct(old_umask), oct(new_umask)))
final_uid = os.getuid()
final_gid = os.getgid()
logging.info('drop_privileges: running as %s/%s' % \
(pwd.getpwuid(final_uid)[0],
grp.getgrgid(final_gid)[0]))