diff options
author | Chris Lumens <clumens@redhat.com> | 2006-04-11 18:29:07 +0000 |
---|---|---|
committer | Chris Lumens <clumens@redhat.com> | 2006-04-11 18:29:07 +0000 |
commit | 123a65b73ba52ae56256c965d610536cc24f5a71 (patch) | |
tree | 7071d45152b27682adf6399ea22fc03754e85193 /instdata.py | |
parent | 2413f486a9bac357c9aa19559cd33a6fd900f07a (diff) | |
download | anaconda-123a65b73ba52ae56256c965d610536cc24f5a71.tar.gz anaconda-123a65b73ba52ae56256c965d610536cc24f5a71.tar.xz anaconda-123a65b73ba52ae56256c965d610536cc24f5a71.zip |
Use libuser for handling the root password instead of a bunch of our own
stuff.
Diffstat (limited to 'instdata.py')
-rw-r--r-- | instdata.py | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/instdata.py b/instdata.py index 6645f4665..dfe750be5 100644 --- a/instdata.py +++ b/instdata.py @@ -21,7 +21,6 @@ import firewall import security import timezone import desktop -import users import fsset import bootloader import partitions @@ -39,6 +38,23 @@ import rhpl.keyboard as keyboard import logging log = logging.getLogger("anaconda") +def cryptPassword(password, useMD5): + import crypt + import random + + if useMD5: + salt = "$1$" + saltLen = 8 + else: + salt = "" + saltLen = 2 + + for i in range(saltLen): + salt = salt + random.choice (string.letters + + string.digits + './') + + return crypt.crypt (password, salt) + # Collector class for all data related to an install/upgrade. class InstallData: @@ -57,7 +73,7 @@ class InstallData: self.firewall = firewall.Firewall() self.security = security.Security() self.timezone = timezone.Timezone() - self.rootPassword = users.RootPassword () + self.rootPassword = { "isCrypted": False, "password": "" } self.auth = "--enableshadow --enablemd5" self.desktop = desktop.Desktop() self.upgrade = None @@ -145,7 +161,20 @@ class InstallData: self.firewall.write (instPath) self.security.write (instPath) - self.rootPassword.write (instPath, useMD5) + + # User should already exist, just without a password. + import libuser + self.luAdmin = libuser.admin() + rootUser = self.luAdmin.lookupUserByName("root") + + if self.rootPassword["isCrypted"]: + log.warning("password is crypted, setting to %s" % self.rootPassword["password"]) + self.luAdmin.setpassUser(rootUser, self.rootPassword["password"], True) + self.luAdmin.modifyUser(rootUser) + else: + log.warning("password is not crypted, setting to %s" % self.rootPassword["password"]) + self.luAdmin.setpassUser(rootUser, cryptPassword(self.rootPassword["password"], useMD5), True) + self.luAdmin.modifyUser(rootUser) def writeKS(self, filename): if self.auth.find("--enablemd5"): @@ -199,7 +228,12 @@ class InstallData: self.xsetup.writeKS(f, self.desktop) self.network.writeKS(f) self.zfcp.writeKS(f) - self.rootPassword.writeKS(f, useMD5) + + if self.rootPassword["isCrypted"]: + f.write("rootpw --iscrypted %s" % self.rootPassword["password"]) + else: + f.write("rootpw --iscrypted %s" % cryptPassword(self.rootPassword["password"], useMD5)) + self.firewall.writeKS(f) if self.auth.strip() != "": f.write("authconfig %s\n" % self.auth) |