Ejemplo n.º 1
0
	def getGroup(self,mess,a): # %nss getGroup gr_gid=1000 gr_name=stud
		s=''
		p=None
		print a
		try:
			if (a.has_key('gr_gid')):
				p=grp.getgruid(a['gr_uid'])
			elif (a.has_key('gr_name')):
				p=grp.getgrnam(a['gr_name'])
			else:
				groups=grp.getgrall()
				i=0
				while (i<len(groups)):
					groups[i]=self.grpStructToDict(groups[i])
					i+=1
				s='@'+mess.getID()+'\n'+self.d.packData(groups,'json')
		except:
			p=None
		if (s==''):
			if (p!=None):
				s='@'+mess.getID()+'\n'+self.d.packData(self.grpStructToDict(p),'json')
			else:
				s='@'+mess.getID()+'\n'+'success=false'
		out=xmpp.Message(mess.getFrom(),s)
		mid=self.d.genId()
		out.setID(mid)
		return out
Ejemplo n.º 2
0
 def run(self):
     # drop privileges if requested
     if os.getuid() == 0:
         # change the GID
         if self.group != None:
             try:
                 group = grp.getgrnam(self.group)
             except:
                 try:
                     group = grp.getgruid(int(self.group))
                 except:
                     raise ServerError("no such group %s" % self.group)
             try:
                 os.setgid(group.gr_gid)
                 logger.debug("changed runtime group to %s" % group.gr_name)
             except Exception, e:
                 raise ServerError("failed to set runtime group: %s" % e)
         # change the UID and supplementary groups
         if self.user != None:
             try:
                 user = pwd.getpwnam(self.user)
             except:
                 try:
                     user = pwd.getpwuid(int(self.user))
                 except:
                     raise ServerError("no such user %s" % self.user)
             groups = [ g.gr_gid for g in grp.getgrall() if user.pw_name in g.gr_mem ]
             try:
                 os.setgroups(groups)
                 os.setuid(user.pw_uid)
                 logger.debug("changed runtime user to %s" % user.pw_name)
             except Exception, e:
                 raise ServerError("failed to set runtime user: %s" % e)
Ejemplo n.º 3
0
def get_gid(grp_str):
    '''
    Attempts to convert the input string to a gid.

    Args:
        group_str: A number stored as a string

    Returns:
        An int that is a gid
    '''

    gid = int(grp_str)
    try:
        return grp.getgruid(int(grp_str)).gr_gid
    except:
        return gid
Ejemplo n.º 4
0
 def run(self):
     # drop privileges if requested
     if os.getuid() == 0:
         # change the GID
         if self.group != None:
             try:
                 group = grp.getgrnam(self.group)
             except:
                 try:
                     group = grp.getgruid(int(self.group))
                 except:
                     raise ServerError("no such group %s" % self.group)
             try:
                 os.setgid(group.gr_gid)
                 logger.debug("changed runtime group to %s" % group.gr_name)
             except Exception, e:
                 raise ServerError("failed to set runtime group: %s" % e)
         # change the UID and supplementary groups
         if self.user != None:
             try:
                 user = pwd.getpwnam(self.user)
             except:
                 try:
                     user = pwd.getpwuid(int(self.user))
                 except:
                     raise ServerError("no such user %s" % self.user)
             groups = [
                 g.gr_gid for g in grp.getgrall()
                 if user.pw_name in g.gr_mem
             ]
             try:
                 os.setgroups(groups)
                 os.setuid(user.pw_uid)
                 logger.debug("changed runtime user to %s" % user.pw_name)
             except Exception, e:
                 raise ServerError("failed to set runtime user: %s" % e)