예제 #1
0
def main():
    setup = get_setup()
    if setup['file']:
        config = lxml.etree.parse(setup['file']).getroot()
    else:
        config = lxml.etree.Element("Configuration")
    users = POSIXUsers(logging.getLogger('posixusers_baseline.py'), setup,
                       config)

    baseline = lxml.etree.Element("Bundle", name="posixusers_baseline")
    for entry in users.FindExtra():
        data = users.existing[entry.tag][entry.get("name")]
        for attr, idx in users.attr_mapping[entry.tag].items():
            if (entry.get(attr) or (attr == 'uid' and setup['nouids'])
                    or (attr == 'gid' and setup['nogids'])):
                continue
            entry.set(attr, str(data[idx]))
        if entry.tag == 'POSIXUser':
            entry.set("group", grp.getgrgid(data[3])[0])
            for group in users.user_supplementary_groups(entry):
                memberof = lxml.etree.SubElement(entry,
                                                 "MemberOf",
                                                 group=group[0])

        entry.tag = "Bound" + entry.tag
        baseline.append(entry)

    print(lxml.etree.tostring(baseline, pretty_print=True))
예제 #2
0
 def __init__(self):
     Bcfg2.Options.get_parser(
         description="Generate a bundle with a baseline of POSIX users and "
         "groups",
         components=[self, POSIXUsers]).parse()
     config = lxml.etree.Element("Configuration")
     self.users = POSIXUsers(config)
     self.logger = logging.getLogger('posixusers_baseline.py')