예제 #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 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))
예제 #3
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')
예제 #4
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)
예제 #5
0
class CLI(object):
    options = [
        Bcfg2.Options.BooleanOption(
            "--no-uids", help="Do not include UID numbers for users"),
        Bcfg2.Options.BooleanOption(
            "--no-gids", help="Do not include GID numbers for groups")]

    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)

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

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

        print(lxml.etree.tostring(baseline, pretty_print=True))
예제 #6
0
class CLI(object):
    options = [
        Bcfg2.Options.BooleanOption(
            "--no-uids", help="Do not include UID numbers for users"),
        Bcfg2.Options.BooleanOption(
            "--no-gids", help="Do not include GID numbers for groups")
    ]

    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')

    def run(self):
        baseline = lxml.etree.Element("Bundle", name="posixusers_baseline")
        for entry in self.users.FindExtra():
            data = self.users.existing[entry.tag][entry.get("name")]
            for attr, idx in self.users.attr_mapping[entry.tag].items():
                if (entry.get(attr)
                        or (attr == 'uid' and Bcfg2.Options.setup.no_uids)
                        or (attr == 'gid' and Bcfg2.Options.setup.no_gids)):
                    continue
                entry.set(attr, str(data[idx]))
            if entry.tag == 'POSIXUser':
                try:
                    entry.set("group", grp.getgrgid(data[3])[0])
                except KeyError:
                    self.logger.warning(
                        "User %s is a member of nonexistent group %s" %
                        (entry.get("name"), data[3]))
                    entry.set("group", str(data[3]))
                for group in self.users.user_supplementary_groups(entry):
                    lxml.etree.SubElement(entry, "MemberOf", group=group[0])

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

        print(lxml.etree.tostring(baseline, pretty_print=True))