diff options
author | Chris Lumens <clumens@redhat.com> | 2012-07-18 11:57:52 -0400 |
---|---|---|
committer | Chris Lumens <clumens@redhat.com> | 2012-07-18 13:38:19 -0400 |
commit | 17f87b00fee72e243f6ec80dc5f58739887c044f (patch) | |
tree | 960552ad16eed3d253de1f7c460789c79da40be7 /pyanaconda | |
parent | 0dd5b9940a35465b4d1fe21690e643a012d57cb7 (diff) | |
download | anaconda-17f87b00fee72e243f6ec80dc5f58739887c044f.tar.gz anaconda-17f87b00fee72e243f6ec80dc5f58739887c044f.tar.xz anaconda-17f87b00fee72e243f6ec80dc5f58739887c044f.zip |
Update the group, rootpw, and user commands to be called from doInstall.
Diffstat (limited to 'pyanaconda')
-rw-r--r-- | pyanaconda/__init__.py | 10 | ||||
-rw-r--r-- | pyanaconda/install.py | 8 | ||||
-rw-r--r-- | pyanaconda/kickstart.py | 28 | ||||
-rw-r--r-- | pyanaconda/users.py | 40 |
4 files changed, 43 insertions, 43 deletions
diff --git a/pyanaconda/__init__.py b/pyanaconda/__init__.py index 7991afbf3..eb44ca90e 100644 --- a/pyanaconda/__init__.py +++ b/pyanaconda/__init__.py @@ -83,7 +83,6 @@ class Anaconda(object): self.updateSrc = None self.upgrade = flags.cmdline.has_key("preupgrade") self.upgradeRoot = None - self._users = None self.mehConfig = None self.clearPartTypeSelection = None # User's GUI selection self.clearPartTypeSystem = None # System's selection @@ -185,14 +184,6 @@ class Anaconda(object): return [] @property - def users(self): - if not self._users: - import users - self._users = users.Users(self) - - return self._users - - @property def storage(self): if not self._storage: import storage @@ -281,6 +272,5 @@ class Anaconda(object): self.network.disableNMForStorageDevices(self) self.network.autostartFCoEDevices(self) self.desktop.write() - self.users.write() self.security.write() self.firewall.write() diff --git a/pyanaconda/install.py b/pyanaconda/install.py index 3f43007c9..be31e75b5 100644 --- a/pyanaconda/install.py +++ b/pyanaconda/install.py @@ -24,6 +24,7 @@ from pyanaconda.constants import ROOT_PATH from pyanaconda.storage import turnOnFilesystems from pyanaconda.bootloader import writeBootLoader from pyanaconda.progress import progress_report +from pyanaconda.users import createLuserConf, Users import gettext _ = lambda x: gettext.ldgettext("anaconda", x) @@ -77,6 +78,13 @@ def doInstall(storage, payload, ksdata, instClass): ksdata.services.execute(storage, ksdata, instClass) ksdata.keyboard.execute(storage, ksdata, instClass) + # Creating users and groups requires some pre-configuration. + u = Users() + createLuserConf(ROOT_PATH, algoname=u.getPassAlgo(ksdata.authconfig.authconfig)) + ksdata.rootpw.execute(storage, ksdata, instClass, u) + ksdata.group.execute(storage, ksdata, instClass, u) + ksdata.user.execute(storage, ksdata, instClass, u) + runPostScripts(ksdata.scripts) # Write the kickstart file to the installed system (or, copy the input diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py index de46e38c4..585911937 100644 --- a/pyanaconda/kickstart.py +++ b/pyanaconda/kickstart.py @@ -431,6 +431,16 @@ class Firstboot(commands.firstboot.FC3_Firstboot): stdout="/dev/tty5", stderr="/dev/tty5", root=ROOT_PATH) +class Group(commands.group.F12_Group): + def execute(self, storage, ksdata, instClass, users): + algo = users.getPassAlgo(ksdata.authconfig.authconfig) + + for grp in self.groupList: + kwargs = grp.__dict__ + kwargs.update({"root": ROOT_PATH}) + if not users.createGroup(grp.name, **kwargs): + log.error("Group %s already exists, not creating." % grp.name) + class IgnoreDisk(commands.ignoredisk.RHEL6_IgnoreDisk): def parse(self, args): retval = commands.ignoredisk.RHEL6_IgnoreDisk.parse(self, args) @@ -1153,6 +1163,11 @@ class RaidData(commands.raid.F15_RaidData): parents=request) storage.createDevice(luksdev) +class RootPw(commands.rootpw.F8_RootPw): + def execute(self, storage, ksdata, instClass, users): + algo = users.getPassAlgo(ksdata.authconfig.authconfig) + users.setRootPassword(self.password, self.isCrypted, self.lock, algo) + class Services(commands.services.FC6_Services): def execute(self, storage, ksdata, instClass): disabled = map(lambda s: s + ".service", self.disabled) @@ -1182,6 +1197,16 @@ class Timezone(commands.timezone.F18_Timezone): ntp.save_servers_to_config(self.ntpservers, conf_file_path=chronyd_conf_path) +class User(commands.user.F12_User): + def execute(self, storage, ksdata, instClass, users): + algo = users.getPassAlgo(ksdata.authconfig.authconfig) + + for usr in self.userList: + kwargs = usr.__dict__ + kwargs.update({"algo": algo, "root": ROOT_PATH}) + if not users.createUser(usr.name, **kwargs): + log.error("User %s already exists, not creating." % usr.name) + class VolGroupData(commands.volgroup.FC16_VolGroupData): def execute(self, storage, ksdata, instClass): pvs = [] @@ -1268,14 +1293,17 @@ commandMap = { "dmraid": DmRaid, "fcoe": Fcoe, "firstboot": Firstboot, + "group": Group, "ignoredisk": IgnoreDisk, "iscsi": Iscsi, "iscsiname": IscsiName, "keyboard": Keyboard, "logging": Logging, "multipath": MultiPath, + "rootpw": RootPw, "services": Services, "timezone": Timezone, + "user": User, "xconfig": XConfig, "zfcp": ZFCP, } diff --git a/pyanaconda/users.py b/pyanaconda/users.py index 9c30f0ed0..6a9e2b9d5 100644 --- a/pyanaconda/users.py +++ b/pyanaconda/users.py @@ -95,10 +95,8 @@ def cryptPassword(password, algo=None): return crypt.crypt (password, saltstr) class Users: - def __init__ (self, anaconda): - self.anaconda = anaconda + def __init__ (self): self.admin = libuser.admin() - self.rootPassword = { "isCrypted": False, "password": "", "lock": False } def createGroup (self, group_name, **kwargs): """Create a new user on the system with the given name. Optional kwargs: @@ -273,13 +271,12 @@ class Users: # Reads the auth string and returns a string indicating our desired # password encoding algorithm. - def getPassAlgo(self): - if self.anaconda.security.auth.find("--enablemd5") != -1 or \ - self.anaconda.security.auth.find("--passalgo=md5") != -1: + def getPassAlgo(self, authconfigStr): + if authconfigStr.find("--enablemd5") != -1 or authconfigStr.find("--passalgo=md5") != -1: return 'md5' - elif self.anaconda.security.auth.find("--passalgo=sha256") != -1: + elif authconfigStr.find("--passalgo=sha256") != -1: return 'sha256' - elif self.anaconda.security.auth.find("--passalgo=sha512") != -1: + elif authconfigStr.find("--passalgo=sha512") != -1: return 'sha512' else: return None @@ -297,28 +294,5 @@ class Users: self.admin.modifyUser(user) - def setRootPassword(self, algo=None): - return self.setUserPassword("root", self.rootPassword["password"], - self.rootPassword["isCrypted"], - self.rootPassword["lock"], algo) - - def write(self): - # make sure crypt_style in libuser.conf matches the salt we're using - createLuserConf(ROOT_PATH, algoname=self.getPassAlgo()) - - # User should already exist, just without a password. - self.setRootPassword(algo=self.getPassAlgo()) - - if self.anaconda.ksdata: - for gd in self.anaconda.ksdata.group.groupList: - kwargs = gd.__dict__ - kwargs.update({"root": ROOT_PATH}) - if not self.createGroup(gd.name, **kwargs): - log.error("Group %s already exists, not creating." % gd.name) - - for ud in self.anaconda.ksdata.user.userList: - kwargs = ud.__dict__ - kwargs.update({"algo": self.getPassAlgo(), - "root": ROOT_PATH}) - if not self.createUser(ud.name, **kwargs): - log.error("User %s already exists, not creating." % ud.name) + def setRootPassword(self, password, isCrypted=False, isLocked=False, algo=None): + return self.setUserPassword("root", password, isCrypted, isLocked, algo) |